2012-10-02 30 views
6

Giả sử tôi có hai lớp:Javadoc khi mở rộng lớp chung với lớp phi generic

abstract class GenericA<E> { 
    public void go(E e) {...} 
} 

public class IntegerA extends GenericA<Integer> { 
} 

Lưu ý rằng GenericA là gói-tư nhân và chung chung, và IntegerA là công khai và không chung chung.

Bây giờ, khi tôi tạo ra Javadoc công cộng (sử dụng Eclipse), tôi thấy sau trong phần IntegerA phương pháp:

public void go(E e) 

Vấn đề là một độc giả của Javadoc mà không có ý tưởng E là gì; tức là, E đại diện cho Integer. Tôi thà có Javadoc nói

public void go(Integer e) 

Có cách nào để Javadoc hoạt động theo cách tôi muốn không?

+0

javadoc của bạn cho biết lớp bậc trên là gì? Tôi vừa thử cái này trên cỗ máy của riêng tôi và nó có cùng vấn đề như bạn đã làm, nhưng nó cũng nói sai rằng lớp siêu là 'Object'. – Dunes

+0

Nó cũng nói rằng lớp siêu là 'Object' đối với tôi. Nhưng kể từ khi tôi tuyên bố 'GenericA' là gói riêng tư hơn là công khai, ý kiến ​​của tôi là đó là hành vi đúng đắn. Khi tôi thay vào đó khai báo 'GenericA' là public, Javadoc nói kiểu siêu của' IntegerA' là 'GenericA ' – Blaine

+1

Ah, tôi thấy vấn đề rồi. Không có phương thức thực sự tồn tại với chữ ký 'go (Integer e)' (như sẽ được hiển thị bằng sự phản chiếu). Vì vậy, javadoc sẽ được nói dối nếu nó chỉ định rằng chữ ký phương pháp, mặc dù đó là một trong những trình biên dịch sẽ nhấn mạnh vào, nó không phải là một trong những thời gian chạy sẽ nhấn mạnh vào ... khó khăn ... Tôi thấy bạn có câu trả lời bạn cần Tuy nhiên. – Dunes

Trả lời

3

Cách duy nhất tôi biết là ghi đè phương thức trong IntegerA với số nguyên và sau đó gọi phương thức siêu.

@Override 
public void go(Integer e) { 
    super.go(e); 
} 
Các vấn đề liên quan