如何創建一個泛型的抽象方法,但被實作為回傳一個具體的型別?
考慮這個簡單的抽象類:
public abstract class Master {
public abstract <T> T getValue();
}
的每個子類都Master應該實作該getValue()方法,但回傳一個具體型別:
public class DateSlave extends Master {
@Override
public LocalDate getValue() {
return LocalDate.now();
}
}
或者:
public class ListSlave extends Master {
@Override
public List<String> getValue() {
return new ArrayList<String>();
}
}
我認為我做錯了整個泛型,因為我不太熟悉它們的使用。上述子類提供了這樣的警告:Unchecked overriding: return type requires unchecked conversion. Found 'java.util.List<java.lang.String>', required 'T'。
有沒有更好的方法來創建子類必須實作的抽象方法,同時還提供自己的具體回傳型別?
uj5u.com熱心網友回復:
這就是你要找的:
public abstract class Master<T> {
public abstract T getValue();
}
public class DateSlave extends Master<LocalDate> {
@Override
public LocalDate getValue() {
return LocalDate.now();
}
}
public class ListSlave extends Master<List<String>> {
@Override
public List<String> getValue() {
return new ArrayList<String>();
}
}
Master<T>是一個泛型類。回傳型別在每個具體類上宣告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/311181.html
上一篇:為多種型別實作泛型
