ジェネリックを使用して、列挙型引数に基づいて戻り値を取得しようとしています。
public enum DataTypes {
MEAL, EXAM_RESULT, SPORTS,ECA, HEATLH;
}
public class GeneralData{
String getDataFile();
}
public class SportsData extends GeneralData{
getDailyCalroiesBurnt();
getSwimmingStyle();
}
public class HealthData extends GeneralData{
getBloodGroup();
}
ここで、関数「getData(DataTypes datatype)」を書きたいと思います。
- DataTypes.SPORTS で呼び出すと、SportsData オブジェクトが返されます
- DataTypes.HEATLH で呼び出すと、HealthData オブジェクトが返されます
- その他すべての戻り値 GeneralData オブジェクト。
何かのようなもの :
<T> T getData(DataTypes datatype){
...
...
}
HealthData healthData = getData(DataTypes.HEATLH);
SportsData sportsData = getData(DataTypes.SPORTS);
GeneralData examData = getData(DataTypes.EXAM_RESULT);
GeneralData mealData = getData(DataTypes.MEAL);
GeneralData ecaData = getData(DataTypes.ECA);
キャストを行う必要がないように、ジェネリックを使用してこれを行うにはどうすればよいですか? これは可能ですか?
基本的に、列挙型をオブジェクト型に静的にバインドして、ジェネリック式で使用するために返される型です。