tôi muốn tạo một số lớp trình bao bọc đơn giản cho một thư viện lớp hiện có. Để làm cho cú pháp tốt đẹp để đọc và tốt đẹp để đoán (thông qua hoàn thành mã) tôi muốn loại bỏ các phương pháp của java.lang.Object.Làm cách nào để ẩn tất cả các phương thức java.lang.Object khỏi hoàn thành mã?
Vấn đề là mọi thứ không nguyên tử trong java kế thừa từ Object và do đó có các phương thức này. Tôi đã cố gắng để tạo ra các cú pháp wrapper thông qua enums và giao diện, mà không thành công; vì enums và giao diện cũng là java.lang.Objects.
java.lang.Object có chín phương pháp mà tôi không muốn thấy trong quá trình hoàn tất mã giao diện của mình. Đây là những gì tôi muốn loại bỏ (màu đỏ) và những gì tôi muốn giữ lại (màu xanh):
alt text http://ju.venile.de/upload/java-lang-object-methods.png
Dưới đây là một số mã ví dụ cho việc tạo giấy gói đẹp xung quanh hiện có các lớp học (Builder pattern):
public interface IMySyntax{
public IMySyntax myMethod1();
public IMySyntax myMethod2();
}
public class MyBuilder implements IMySyntax{
public static IMySyntax build(){ return (IMySyntax) new MyBuilder() }
public IMySyntax myMethod1(){ /* do something */ return (IMySyntax) this }
public IMySyntax myMethod2(){ /* do something */ return (IMySyntax) this }
}
Sử dụng mã wrapper mới sẽ trông như thế này:
MyBuilder.build()
.myMethod1()
.myMethod2();
đúc tất cả this
báo cáo của người xây dựng một interf ace sẽ giảm khả năng hiển thị phương thức, ví dụ: nếu người xây dựng thực hiện nhiều hơn một giao diện. Tất cả các phương thức java.lang.Object sẽ ở lại, thật không may.
Nếu phương pháp ẩn này có thể thực hiện được trong Java (có thể sử dụng chú thích?), Tôi có thể tạo một thư viện đẹp mà là bất khả tri IDE (hoàn thành mã tốt ở mọi nơi). Nếu không, hơn có thể có một thủ thuật cho ít nhất IDE Eclipse (có thể là một plugin?) Có thể cung cấp phương thức java.lang.Object ẩn.
Tôi nghĩ bạn có thể muốn giới hạn phạm vi này thành một IDE cụ thể (như Eclipse). Tôi chắc chắn 99% rằng IntelliJ IDE thực hiện điều này ngay từ đầu (nghĩa là nó đặt các phương thức phù hợp nhất trước tiên). –