2010-01-11 30 views
11

Có cách nào để "kế thừa" nhập khẩu không?Tránh nhập lặp lại trong Java: Thừa kế nhập?

Ví dụ:

enum chung:

public enum Constant{ ONE, TWO, THREE } 

lớp cơ sở sử dụng enum này:

public class Base { 
    protected void register(Constant c, String t) { 
     ... 
    } 
} 

Sub lớp cần một nhập khẩu để sử dụng hằng enum thuận tiện (không có tên enum):

import static Constant.*; // want to avoid this line! 
public Sub extends Base { 
    public Sub() { 
     register(TWO, "blabla"); // without import: Constant.TWO 
    } 
} 

và một lớp với cùng một khẩu ...

import static Constant.*; // want to avoid this line! 
public AnotherSub extends Base { 
    ... 
} 

tôi có thể sử dụng cổ điển hằng thức tĩnh nhưng có lẽ đó là một cách để sử dụng một enum chung với sự tiện lợi tương tự.

+1

Nếu bạn sử dụng một IDE (nói Eclipse) sau đó nhập khẩu sẽ được tự động thêm vào khi bạn sử dụng lớp. – medopal

Trả lời

13

import s chỉ là một trợ giúp để trình biên dịch để tìm các lớp học. Chúng hoạt động cho một tệp nguồn duy nhất và không có liên quan gì đến các cơ chế OOP của Java.

Vì vậy, không có, bạn có thể không phải là “kế thừa” import s

3

Không, bạn không thể kế thừa một lần nhập. Nếu bạn muốn tham chiếu một loại trong tệp lớp mà không sử dụng tên đủ điều kiện, bạn phải nhập một cách rõ ràng.

Nhưng trong ví dụ của bạn nó sẽ được dễ dàng, đủ để nói

public Sub extends Base { 
    public Sub() { 
     register(Constant.TWO, "blabla"); // without import: Constant.TWO 
    } 
} 
3

Nếu bạn đang sử dụng Eclipse, sử dụng "Organize Imports" (Ctrl + phím Shift + O) để cho các IDE làm nhập khẩu cho bạn (hoặc hoàn thành mã sử dụng (Ctrl +Space)

+2

Eve n tốt hơn, thiết lập này như là một "Lưu hành động" để Eclipse sẽ tổ chức chúng mỗi khi bạn lưu các tập tin. Điều này và định dạng trên Save giúp tiết kiệm bất kỳ chu kỳ não suy nghĩ về những điều như vậy :) –

+0

Ý tưởng rất tốt, hoàn toàn quên mất điều đó ^^ – helpermethod

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