Tôi có một lớp là đa điểm, vì vậy tôi biết rằng với một khóa cụ thể, sẽ không bao giờ có hai phiên bản của cùng một lớp tồn tại. Điều này có nghĩa rằng, thay vì:Chú thích một lớp Java là an toàn để so sánh tham chiếu
if (someObject.equals(anotherObject))
... nó an toàn cho tôi để làm điều này:
if (someObject == anotherObject)
Lớp cũng là final
, vì vậy tôi biết rằng không có gì liên quan đến đa hình có thể gây rắc rối cho so sánh hoặc.
IDEA thận trọng thông báo cho tôi rằng thật mạo hiểm khi so sánh hai trường hợp trực tiếp và tôi nên sử dụng .equals()
, nhưng tôi biết không phải trong trường hợp này. Có một số chú thích tôi có thể áp dụng cho lớp học của mình để hướng dẫn IDEA, và các biên tập viên tiềm năng khác và quan trọng hơn những người dùng khác không, đó là sự so sánh trực tiếp về bình đẳng trong các lớp học của tôi là an toàn?
Tôi biết tôi chỉ có thể nói với IDEA để ngăn chặn cảnh báo, nhưng tôi phải làm điều đó cho mọi so sánh giữa hai loại này hoặc trên toàn cầu, không phải ý tưởng nào là tốt. Ngoài ra, điều quan trọng hơn là tôi cho phép người dùng trong lớp biết rằng nó an toàn, nhanh hơn và thậm chí còn được ưa thích hơn (thuyết phục tôi bằng cách khác) qua số .equals()
.
Ồ, và tuần tự hóa hoặc các hành vi khác không được áp dụng tại đây. Đối tượng chỉ được xây dựng bởi tôi, không phải ngẫu nhiên thông qua các phương tiện khác như deserialization. Đây là một ứng dụng GWT cũng có nghĩa là bất cứ điều gì liên quan đến đa luồng cũng không áp dụng. – user3466413
Tôi sẽ cố gắng tranh luận về '.equals' ở đây: Nếu bạn chỉ có' .equals' tham chiếu đến bình đẳng tham chiếu, nó nên tối ưu hóa thành '==', và người dùng không phải nhớ rằng một số đối tượng là okay với '==' và một số thì không. Họ chỉ có thể sử dụng '.equals' ở khắp mọi nơi và nó sẽ có hiệu năng tốt như' == '. –
@LouisWasserman Nhưng sau đó bạn phải cẩn thận rằng tài liệu tham khảo của bạn không phải là null. Hoặc ít nhất là bàn tay trái của bạn không phải. – RealSkeptic