2013-10-29 30 views
5

在本書中,我用它來爲新的Oracle認證專家準備 - 的Java SE7程序員考試,在與方法重載交易的部分,我所遇到的以下內容:方法重寫:相同的參數列表類型(或COMPATIBLE類型)?

覆蓋方法應該有的作爲基礎版本的相同參數列表類型或 兼容類型)。

「兼容類型」是什麼意思?我的意思是,只要參數列表類型不同,就會超載,而不是覆蓋。

我只能想到重寫一個採用可變參數的方法,一個採用相同類型的數組。編譯器發出警告,但仍編譯。

兼容類型是什麼意思?這是書中的錯誤嗎?

+0

他們是否指'原始類型的'sub' /'super'類? – nhgrif

+0

可能是他們的意思是'(int a,String b)'和'(String b,int a)' –

回答

2

也許它與類型擦除有關。這是有效的Java,它只是給你一個警告:

abstract class Foo { 
    public abstract void method(List<String> xs); 
} 

class Bar extends Foo { 
    @Override 
    public void method(List xs) { 
    } 
} 

原始類型ListList<String>兼容。

+1

IMO之間的區別最合理的答案。 http://docs.oracle.com/javase/tutorial/java/generics/rawTypes.html – Sambuca

+0

有趣的一點!沒想到這個:-) –

相關問題