我正在尝试使用泛型来根据枚举参数获取返回值。
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);
如何使用泛型来做到这一点,这样我就不必进行任何转换?这可能吗?
基本上,我的类型以某种方式静态地将枚举绑定(bind)到要返回以在泛型表达式中使用的对象类型。
最佳答案
我会传递类对象:
<T extends GeneralData> T getData(Class<T> clazz);
然后你可以这样做:
SportsData sportsData = readData(SportsData.class);
HealthData healthData = readData(HealthData.class);
关于java - 在泛型表达式中使用枚举来定义返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18941979/