Tôi đang sử dụng lamdbas để tôi có thể thiết lập một cách nhất quán các thuộc tính của một ModelObject theo các giá trị tôi có thể lấy từ ba đối tượng khác nhau. Mã này hoạt động như thế này:phép gán dấu hai chấm trên phương thức có hai tham số
public class Processor {
private void bar(Setter setter, MyClass myObject) {
String variable = myObject.getStringByABunchOfMethods();
setter.setVariable(variable);
}
protected void foo(...) {
...
bar(value -> model.setA(CONSTANT, value), aObject);
bar(value -> model.setB(value), bObject);
bar(value -> model.setC(value), cObject);
...
}
private interface Setter {
public void setVariable(String string);
}
}
public interface IModel {
public void setA(String arg0, String arg1);
public void setB(String arg0);
public void setC(String arg0);
}
Tôi đã đọc here rằng người ta có thể viết lại bar(value -> model.setB(value), bObject);
để bar(model::setB, bObject)
. Tôi nghĩ rằng điều này có vẻ tốt hơn và ngắn gọn hơn, nhưng tôi đã không tìm thấy một cách để viết lại phương thức setA
thành ký hiệu kép ::. Bất cứ ai có thể cho tôi biết nếu điều này là có thể, và nếu như vậy: làm thế nào là điều này có thể?
Vui lòng tham khảo [Liên kết tham chiếu phương pháp] (https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html). Hiển thị tất cả các loại tham chiếu phương thức. Hy vọng điều này sẽ giúp –
Tôi không nghĩ rằng điều đó là có thể. – toongeorges