Tôi có một đối tượng. Tôi muốn kiểm tra xem nó có thuộc loại enum hay không. Có hai cách để làm điều này.Sử dụng class.isEnum() hoặc instanceof Enum có tốt hơn không?
object.getClass().isEnum()
hoặc
object instanceof Enum
Là một tốt hơn?
Tôi có một đối tượng. Tôi muốn kiểm tra xem nó có thuộc loại enum hay không. Có hai cách để làm điều này.Sử dụng class.isEnum() hoặc instanceof Enum có tốt hơn không?
object.getClass().isEnum()
hoặc
object instanceof Enum
Là một tốt hơn?
Theo tôi object instanceof Enum
là tốt hơn vì nhiều lý do:
NullPointerException
(nếu object
là null
, nó sẽ chỉ đánh giá để false
)Lý do duy nhất tôi thấy khi sử dụng isEnum()
sẽ là nếu tôi chỉ có quyền truy cập vào đối tượng Class
chứ không phải đối tượng cụ thể.
+1 về NPE. Tôi đang làm điều đó ngay bây giờ trong một vòng lặp và không chắc chắn nếu nó sẽ quan trọng –
Theo như hiệu suất, 'instanceof' hoạt động nhanh hơn (nó thay đổi tùy thuộc vào lớp đang được thử nghiệm, nhưng đối với tất cả các bài kiểm tra của tôi đã được ít nhất Nhanh hơn 33% so với 'isEnum', nhanh nhất là nhanh hơn khoảng 450%). isEnum: 2691826 instanceof: 658774 – ty1824
@ ty1824 - tuyệt vời. Số liệu thống kê là điều chính xác tôi đang tìm kiếm –
Bằng "tốt hơn", ý bạn là "dễ đọc hơn", "chạy nhanh hơn", v.v ...? – templatetypedef
@templatetypedef Chủ yếu là hiệu suất sau đó dễ đọc hơn. –
Nếu bạn cần xác định xem một đối tượng có phải là Enum hay không, thì câu hỏi bạn nên hỏi là "Tại sao tôi lại sử dụng thiết kế khủng khiếp này". – DwB