Có sự khác biệt về hiệu quả (ví dụ: thời gian thực thi, kích thước mã, v.v.) giữa hai cách làm việc này không? Dưới đây là những ví dụ giả tạo tạo đối tượng và không làm gì cả, nhưng kịch bản thực tế của tôi có thể tạo Chủ đề, Người nghe mới, v.v. Giả sử các đoạn mã sau xảy ra trong một vòng lặp để có thể tạo sự khác biệt.Ẩn ý nghĩa hiệu quả lớp ẩn danh Java
Sử dụng đối tượng ẩn danh:
void doSomething() {
for (/* Assume some loop */) {
final Object obj1, obj2; // some free variables
IWorker anonymousWorker = new IWorker() {
doWork() {
// do things that refer to obj1 and obj2
}
};
}
}
Định nghĩa một lớp đầu tiên:
void doSomething() {
for (/* Assume some loop */) {
Object obj1, obj2;
IWorker worker = new Worker(obj1, obj2);
}
}
static class Worker implements IWorker {
private Object obj1, obj2;
public CustomObject(Object obj1, Object obj2) {/* blah blah */}
@Override
public void doWork() {}
};
Bạn nên làm những gì bạn tin là rõ ràng nhất và dễ hiểu nhất, sự khác biệt hiệu suất sẽ nhỏ hơn nhiều so với công việc bạn làm trong doWork() để nó không tạo sự khác biệt. Nếu tôi ước tính sự khác biệt, tôi sẽ mong đợi khoảng 10 nano giây. –
Trừ khi bạn đang thực hiện mã quan trọng và bài giảng của bạn không giữ – LegendLength