Я пытаюсь сделать свое приложение более эффективным, используя дженерики Java, но у меня нет большого опыта дженериков.Я пытаюсь сделать это:
Мои два объекта модели:
public class Person {
private String firstName;
private String lastName;
private int age;
// ...
// Getters and Setters Here
}
public class Car {
private String make;
private String model;
private int year;
// ...
// Getters and Setters Here
}
Мои объекты результата:
private class PersonResult {
private boolean success;
private String notes;
private int score;
// Getters and Setters Here
}
private class CarResult {
private boolean success;
private String notes;
private int score;
private double price;
// Getters and Setters Here
}
Мой основной класс:
public class MyClass{
public mainMethod(){
List<Person> listOfPersons = new ArrayList<>();
List<Car> listOfCars = new ArrayList<>();
listOfPersons.add(// a Person object);
// ...
listOfCars.add(// a Car object);
// ...
PersonResult = resultMethod(listOfPersons);
CarResult = resultMethod(listOfCars);
}
private <E,T> E resultMethod(List<T> listOfData)
{
Engine engine = EngineFactory.getEngine();
// if(listOfData.contains(Person.class))
if (listOfData instanceof List<Person>)
{
PersonResult personResult = new PersonResult();
perosnResult = engine.getPersonResult(listOfData);
return personResult;
}
// else if(listOfData.contains(Car.class))
else if (listOfData instanceof List<Car>)
{
CarResult carResult = new CarResult();
carResult engine.getCarResult(listOfData);
return carResult;
}
return null;
}
}
Однако моя IDE жалуется на:
1 Illegal generic type for instanceof
2 (для возвращаемого значения) Incompatible types: Required: E - Found PersonResult
Как видите, я также попытался listOfData.contains(Person.class)
, который позаботился об ошибке # 1, но не об ошибке возврата.