我正在尝试使用泛型根据枚举参数获取返回值。
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);
我怎样才能使用泛型来做到这一点,这样我就不必进行任何强制转换?这甚至可能吗?
基本上,我是以某种方式将枚举静态绑定到要返回以在泛型表达式中使用的对象类型的类型。