[英]Java generic abstract method parameters
我試圖更好地理解抽象並遇到問題。
我有以下課程:
抽象類:
public abstract class Box {
abstract <T extends Mass> void putMassInBox(T mass);
}
實現方式:
public class CircleBox extends Box {
@Override
void putMassInBox(Mass mass) {
CircleMass circleMass = (CircleMass) mass;
}
}
下面的一個會導致錯誤,因為它無法將SquareMass識別為質量,或者我正在告訴它執行此操作的錯誤方法。
public class SquareBox extends Box {
@Override
void putMassInBox(SquareMass mass) {
// TODO Auto-generated method stub
}
}
這是Mass接口:
public interface Mass {
}
這是它的實現:
public class CircleMass implements Mass {
}
public class SquareMass implements Mass {
}
因此,我想強制采用根據其實現方式來獲取參數的方法。 我知道我可以像在circleMass示例中那樣進行質量傳遞,但是我想知道這是否是最好的方法? 是否可以強制采用任何對象擴展其他對象的方法? 值得付出額外的努力還是鑄造這種抽象的標准方法。
您必須使類通用,而不是方法:
public abstract class Box<T extends Mass> {
abstract void putMassInBox(T mass);
}
public class CircleBox extends Box<CircleMass> {
@Override
void putMassInBox(CircleMass mass) {
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.