Đây có thể là một câu hỏi khá chủ quan, nhưng có thể không. Ứng dụng của tôi chứa một loạt các biểu mẫu được hiển thị cho người dùng vào các thời điểm khác nhau. Mỗi hình thức là một lớp của riêng nó. Thông thường, người dùng nhấp vào một nút, sẽ ra mắt một biểu mẫu mới.Sự phù hợp phản chiếu Java
Tôi có một chức năng tiện lợi mà xây dựng các nút này, bạn gọi nó như thế này:
buildButton("button text", new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
showForm(new TasksForm(args...));
}
});
tôi làm hàng chục này lần, và nó thực sự cồng kềnh phải thực hiện một SelectionAdapter mỗi lần.
Thật tất cả những gì cần cho các nút để biết là những gì lớp để nhanh chóng khi được nhấp vào và những gì đối số để cung cấp cho các nhà xây dựng, vì vậy tôi đã xây dựng một chức năng mà tôi gọi như thay vì điều này:
buildButton("button text", TasksForm.class, args...);
đâu args là một danh sách các đối tượng tùy ý mà bạn có thể sử dụng để khởi tạo TasksForm bình thường.
Nó sử dụng sự phản chiếu để có được một hàm tạo từ lớp, khớp với danh sách đối số và xây dựng một cá thể khi cần. Hầu hết thời gian tôi không phải truyền bất kỳ đối số nào cho hàm tạo. Nhược điểm là rõ ràng rằng nếu tôi đang đi qua một bộ xấu của các đối số, nó không thể phát hiện rằng tại thời gian biên dịch, vì vậy nếu nó không thành công, một hộp thoại sẽ được hiển thị trong thời gian chạy. Nhưng nó sẽ không bình thường thất bại, và nó sẽ được dễ dàng để gỡ lỗi nếu nó.
Tôi nghĩ rằng điều này là sạch hơn nhiều vì tôi đến từ các ngôn ngữ mà việc sử dụng hàm và lớp học là khá phổ biến. Nhưng nếu bạn là một lập trình viên Java bình thường, sẽ thấy điều này khiến bạn băn khoăn, hoặc bạn sẽ đánh giá cao việc không phải quét hàng triệu chương trình lựa chọn?
Tôi sẽ phản ánh. –