Trong một câu hỏi gần đây, có người hỏi về các phương pháp tĩnh và một trong những câu trả lời nói rằng bạn thường gọi chúng với cái gì đó như:Đang gọi phương thức tĩnh thông qua một đối tượng "biểu mẫu xấu"? Tại sao?
MyClassName.myStaticMethod();
Các ý kiến về mà cũng nói rằng bạn cũng có thể gọi nó là thông qua một đối tượng với :
MyClassName myVar;
myVar.myStaticMethod();
nhưng nó bị coi là xấu.
Bây giờ có vẻ như với tôi rằng làm điều này thực sự có thể làm cho cuộc sống của tôi dễ dàng vì vậy tôi không cần phải lo lắng về những gì tĩnh hay không (a).
Có phải có vấn đề gì khi gọi các chức năng tĩnh qua đối tượng không? Rõ ràng bạn sẽ không muốn tạo một thương hiệu đối tượng mới chỉ để gọi nó là:
Integer xyzzy;
int plugh = xyzzy.parseInt ("42", 10);
Nhưng, nếu bạn đã có một đối tượng của kiểu như mong muốn, là có một vấn đề trong sử dụng nó?
(a) Rõ ràng, tôi không thể gọi một phương thức không tĩnh với:
MyClassName.myNonStaticMethod();
nhưng đó không phải là vấn đề tôi đang hỏi về tại đây.
Xem câu trả lời SO này để biết thông tin http://stackoverflow.com/questions/610458/why-isnt-calling-a-static-method-by-way-of-an-instance-an-error-for-the -java-co/610674 # 610674 –
Khi tôi đọc mã và có một cuộc gọi đến một phương pháp, với tôi nó ** rất cao ** có liên quan để có thể nói ngay rằng cuộc gọi đó không thể đọc và sửa đổi trạng thái của đối tượng nó thuộc về. Với 'MyClassName.myStaticMethod();' thậm chí không cần phải tự hỏi về nó trong một giây. Với 'myVar.myStaticMethod();' bạn cần xem mã của phương thức, và bạn sẽ luôn nghi ngờ về các lệnh gọi _all_. Tất nhiên các IDE khác nhau có thể làm cho thông tin này dễ lấy lại (chú giải công cụ Javadoc, tô sáng cú pháp, v.v.) nhưng tôi sẽ không dựa vào đó để quyết định cách viết mã. – SantiBailors