Tôi đã có một câu hỏi về việc tái sử dụng các biểu thức lambda mà không trùng lặp mã. Ví dụ, nếu tôi có một phương pháp trợ giúp tôi có thể dễ dàng mã nó như là một phương pháp tĩnh và có thể tham khảo nó từ các lớp khác mà không cần sao chép mã. Làm thế nào điều này sẽ làm việc trong biểu thức lambda? Ví dụ: Tôi có phương pháp tĩnh sau bằng văn bảnbiểu thức lambda vs phương pháp tĩnh
public class MyUtil {
public static int doubleMe(int x) {
return x * 2;
}
}
tôi có thể tái sử dụng cùng một phương pháp không có mã trùng lặp ở nhiều nơi trên khắp các dự án
public class A {
public void someOtherCalculation() {
MyUtil.doubleMe(5);
}
}
public class B {
public void myCalculation() {
MyUtil.doubleMe(3);
}
}
Làm thế nào nó sẽ làm việc khi nói đến một hàm lambda , viết hàm một lần và sử dụng cùng một lúc ở nhiều lớp.
Function<Integer, Integer> doubleFunction = x -> x * 2;
Trong ví dụ của tôi, tôi sẽ viết hàm lambda ở trên và cách tôi sử dụng lại cùng lớp A và B?
"Sử dụng lại mã" là mục tiêu sai ở đây. Mã _expressiveness_ là những gì cần thiết. Những gì có thể gây hại là có từ việc sử dụng một lambda mà không "tái sử dụng" mã, và những bằng chứng nào bạn có mà nó không? Lambdas là khi nhiều functors khác nhau có thể thay thế trong một thuật toán. Bạn sẽ viết một phương pháp tĩnh rõ ràng cho tất cả chúng, và tạo ra một tham chiếu phương pháp cho mỗi chỉ để bạn có thể nói, "Hãy nhìn xem, mẹ, tôi đang sử dụng lambdas!"? Nó không có ý nghĩa hơn chỉ để sử dụng lambdas thông thường trong trường hợp như vậy? Lợi ích kỹ thuật _real_ bạn tìm kiếm là gì? –
Nếu bạn muốn sử dụng lại một hàm, sau đó xác định một lớp thực hiện giao diện Function. Một phương thức tĩnh không phải là một hàm. – xgbuils