Я пытаюсь использовать generics для получения возвращаемого значения на основе аргумента enum.Использование перечисления в общем выражении для определения типов возвращаемых значений
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 тип данных)", который
- при вызове с 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);
Как я могу сделать это с помощью дженериков, так что я не должен делать любой кастинг? Возможно ли это?
В основном я типа, чтобы каким-либо образом статически связывать перечисление с типом объекта, который должен быть возвращен для использования в общем выражении.
Не возможно в таком виде - какой тип должен 'GetData (randomBool() DataTypes.SPORTS? : DataTypes.HEALTH) 'return? – Eric
Я второй вариант «невозможно»/«не имеет смысла, учитывая систему типов Java». Также этот вопрос задают миллион раз. – millimoose