Gần đây, có một câu hỏi đặt ra một ý tưởng hay trong Java để gán kết quả gọi hàm getter đến biến cục bộ để tránh nhiều cuộc gọi đến cùng một trình truy cập. Tôi không thể tìm thấy bài viết gốc nhưng sự đồng thuận dường như là điều này nói chung là không cần thiết vì Hotspot sẽ tối ưu hóa các cuộc gọi phương thức trên không anyway.Phân bổ biến cục bộ để tránh nhiều phôi
Tuy nhiên, quan điểm về việc sử dụng kỹ thuật này để tránh nhiều phôi là gì? Tại thời điểm này tôi đang phải đối mặt với một sự lựa chọn giữa:
if (a instanceof Foo) {
// Cast once and assign to local variable.
Foo foo = (Foo)a;
if (foo.getB() == 1 && foo.getC() == 2) {
...
}
}
HOẶC
if (a instanceof Foo) {
// Cast twice making code compact but possibly less readable.
// Also, is there an overhead in multiple casts?
if (((Foo)a).getB() == 1 && ((Foo)a).getC() == 2) {
...
}
}
Có vấn đề gì với Lisp? –
Không có gì, tôi yêu Lisp, nó chỉ xảy ra có rất nhiều dấu ngoặc đơn, đó là tất cả. –