簡體   English   中英

Java通用抽象方法參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM