2009-02-23 28 views
8

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ì enumsgiao 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.

+1

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). –

Trả lời

26

Đối với Eclipse 3.4 ít nhất bạn có thể làm như sau:

1) Tới Preferences -> Java -> Appearance -> Loại lọc 2) Nhấp vào Thêm, và nhập java.lang.Object

Bây giờ trong mã hỗ trợ, các phương thức được kế thừa trực tiếp từ java.lang.Object sẽ biến mất

+0

Thx! Nếu không ai đưa ra câu trả lời dựa trên java rất sớm, tôi sẽ chấp nhận câu trả lời này. – Juve

+0

Tôi muốn giới thiệu phương pháp này. Bạn cũng có thể nói nhật thực những loại đề xuất nào để sử dụng. –

+0

Vấn đề mà nếu bạn cần toString ví dụ, bạn bỏ lỡ nó từ hoàn thành ở tất cả. Có một nhu cầu cho một giải pháp phức tạp hơn để phù hợp với họ chỉ khi bạn gõ hai hoặc nhiều ký tự, hoặc đặt vào cuối danh sách và màu xám ra chúng theo mặc định hoặc một cái gì đó như thế. –

Các vấn đề liên quan