- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是 Javafx 2 构建器表示法的忠实粉丝,但它已在 Java 8 中弃用,我需要在大型代码库中替换我的旧代码。我想保持类似的编程风格。现在我可以使用双括号初始化,但我不喜欢创建这么多匿名内部类,我发现它有时会导致某些类出现问题。我认为必须有一种方法可以使用 lambda 来完成类似的事情并想出了这个。
public class FXUtil {
public static T build(T node, Consumer initializer) {
initializer.accept(node);
return node;
}
}
所以现在我可以像这样替换我的构建器
Label label = FXUtil.build(new Label(), label -> {
label.setText("Text");
label.setStyle("-fx-font-size: 20");
label.setMinWidth(100);
});
这不如构建器或双括号语法好,但总比没有好。我的问题是这是否有任何类似于双括号初始化的缺点?对象本身不是匿名类,但我是否通过为 lambda 创建匿名类来做同样的事情? lambda 应该被垃圾收集,对吗?既然 permgen 空间在 JDK8 中消失了,我还需要担心这个吗?除了使用 FXML 之外,还有其他人有更好的初始化 javafx 类的方法吗?
编辑:根据@BenjaminGale 的建议更新示例
câu trả lời hay nhất
我假设您提到的双括号初始化的缺点是,作为内部类,它捕获对创建它的封闭类的引用。 lambda 不会那样做。 (而且,在 Oracle Hotspot JVM 上,它也不会编译为匿名内部类。)
关于java - 使用 Java Lambdas 替换 javafx 构建器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942999/
Các cặp có thứ tự có thể được tạo bằng cách sử dụng lambda và các hàm (một nhược điểm trong Lisp), như được minh họa trong phần Sử dụng lambda cho định nghĩa cons/car/cdr trong SICP. Nó cũng hoạt động với Python
Tôi đang cố gắng gọi một lambda AWS từ một lambda khác và thực hiện chuỗi lambda. Lý do cho điều này là AWS không cung cấp nhiều trình kích hoạt từ cùng một nhóm S3. Tôi đã tạo lambda bằng trình kích hoạt s3. Đầu tiên
Dựa trên mã nguồn sau đây, có vẻ như lambda thông thường có thể thay thế được với lambda mở rộng. fun main(args: Array) { val số = listOf(1, 2, 3) f
Hướng dẫn Giới thiệu về Phép tính Lambda Bài viết này giới thiệu hàm nhân Phép nhân hai số x và y ca
Tôi đang cố gắng tìm ra cách vẽ cây cú pháp cho biểu thức sau. Đầu tiên, điều này biểu hiện chính xác như thế nào? Có vẻ như nó lấy 1 và 2 làm tham số và nếu n bằng 0, nó sẽ chỉ trả về m. Ngoài ra, ai đó có thể chỉ ra phần đầu của cây phân tích hoặc một ví dụ không? Tôi chưa thể tìm thấy một. câu trả lời hay nhất
Trong C++ 0x, tôi muốn biết loại hàm lambda là gì. Cụ thể: #include type1 foo(int x){ return [x](int y)->int{return x * y
Tôi đã thấy câu hỏi này trên một trong những tin tuyển dụng, nó hỏi hàm lambda là gì và nó liên quan như thế nào đến các hàm bậc cao hơn. Tôi đã biết cách sử dụng các hàm lambda nhưng không quá tự tin khi giải thích nó, vì vậy tôi đã tra cứu trên Google một chút và tìm thấy điều này: Cái gì
Thật khó để nói những gì đang được hỏi ở đây. Câu hỏi mơ hồ, mơ hồ, không đầy đủ, quá rộng hoặc hùng biện và không thể trả lời hợp lý ở dạng hiện tại. Để được trợ giúp làm rõ vấn đề này để bạn có thể mở lại, hãy truy cập trung tâm trợ giúp. Đã đóng
Đánh giá (((lambda(xy) (lambda (x) (* xy))) 5 6) 10) trong Đề án Tôi thực sự không biết cách thực hiện!
Tôi đang làm việc với một tập hợp các phiên bản của MyCustomType như sau: fun runAll(vararg command: MyCustomType){ command.forEach { it.myM
Tiền đề của Brian trong lập luận của ông cho câu hỏi "Tác dụng phụ có phải là điều tốt không?" thật thú vị: máy tính là cỗ máy von-Neumann.
Trong Common Lisp, nếu tôi muốn hai hàm chia sẻ trạng thái, tôi sẽ bỏ qua lambda như thế này: (let ((state 1)) (defun inc-state () (in
Đánh giá (((lambda(xy) (lambda (x) (* xy))) 5 6) 10) trong Đề án Tôi thực sự không biết cách thực hiện!
Tham khảo wiki phép tính lambda: Có một số cách có thể để xác định các số tự nhiên trong phép tính lambda
Tôi có một lớp dữ liệu và tôi cần khởi tạo một số Danh sách. Tôi cần lấy giá trị của JsonArray (Tôi đang sử dụng Gson). Tôi đã thực hiện chức năng này: Private fun arrayToList(data: JsonAr
Có một cách viết tắt nào trong sơ đồ cho ((lambda() )) Ví dụ: thay vì ((lambda() (define x 1) (display x))) tôi muốn có thể làm một cái gì đó như (empty-lam
Tôi có phương thức sau trong thư viện Java: public void setColumnComparator(final int columIndex, Final Comparator colu
Tôi đang nghiên cứu một hàm để tính toán các bước di chuyển hiệu quả của các quân cờ trong một ván cờ vua. Chức năng cầm đồ trắng hoạt động. Khi tôi cố gắng khái quát hóa điều này cho nước đi cầm đồ của một trong hai người chơi, tôi đã gặp phải một lệnh gọi hàm bất hợp pháp. Tôi đã thay thế rồi
Hãy xem xét mã này (được biên dịch trên GCC và MSVC): int main() { auto foo = [](auto p){ typedef decltype(p) p_t;
Tôi đang đọc một đoạn mã sử dụng lambda bên trong lambda và tôi muốn kiểm tra nó bằng cách tạo một hàm giả đọc từ một tệp rồi trả về số tối đa và tối thiểu. Đây là những gì tôi nghĩ ra dummy = đường dẫn lambda
Tôi là một lập trình viên xuất sắc, rất giỏi!