好吧,我從來沒有使用過泛型,並想知道我是否可以按照以下方式使用泛型。關於Java泛型和子類
讓我們假設我有這個類
public class ASuperClass {
public abstract void doSomething(String arg1, Integer arg2);
}
所以,如果我再擴展上面的類我會再有以下,在那裏我將不得不重寫DoSomething的與字符串和整數的參數列表。
public class ASubClass extends ASuperClass{
@Override
public void doSomething(String arg1, Integer arg2){
some code.....
}
}
現在,讓我們假設在我的子類,我也好覆蓋DoSomething的,但我需要在我的子類的附加字符串ARG。所以,我希望做的是有以下:
public class ASubClass extends ASuperClass{
@Override
public void doSomething(String arg1, Integer arg2, String arg3){
some code...
}
}
上面雖然不會編譯,因爲我的子類沒有實現在基本定義的抽象簽名。所以,爲了讓它編譯,我當然可以這樣做:
public class ASubClass extends ASuperClass{
@Override
public void doSomething(String arg1, Integer arg2){}
public void doSomething(String arg1, Integer areg2, String arg3){
here is my code......
}
}
那麼,我究竟想要做什麼,你可能會問?我感興趣的是,是否有辦法「強制」類的任何子類,使用泛型作爲參數,實現基本抽象方法,而不管參數列表如何。因此,以下將編譯延長ASuperClass:
public class ASubClass extends ASuperClass{
@Override
public void doSomething(String arg1, Integer areg2, String arg3){
here is my code......
}
}
public class AnotherSubClass extends ASuperClass{
@Override
public void doSomething(String arg1, Integer areg2, String arg3, Integer arg4){
here is my code......
}
}
那麼,你能「仿製IZE」的基類ARG列表,以便上述兩個班將彙編?像下面的東西?我知道下面的語法是錯誤的,但是你可以使arg列表是通用的嗎?總的來說,我的想法是在人們擴展一些基本功能的應用程序中強制執行一致性。基本上確保ASuperClass的每個子類都有一個doSomething()成員函數,以確保跨子類的一致性(特別是方法命名),但是它的arg列表可能在每個子類中都不相同。
希望以上不是太混亂。有興趣知道這是否可能。
這根本不可能。而仿製藥甚至無法進入畫面。你必須在子類中有兩種不同的方法。 –