gpt4 book ai didi

java - 如何使用传入的通用对象列表并通过 Java 方法返回通用对象?

转载 作者:行者123 更新时间:2023-12-02 00:13:29 25 4
gpt4 key购买 nike

我试图通过使用 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 instanceof 的泛型类型非法

2(返回值)不兼容的类型:必需:E - Found PersonResult

如您所见,我还尝试了 listOfData.contains(Person.class),它解决了错误#1,但没有解决返回错误。

最佳答案

您无法通过 instanceof 测试通用参数。 instanceof将在运行时进行评估。但编译器删除了泛型类型。它们在运行时不存在。例如List<Integer>将与 List 相同在运行时。

您可以在此处使用不带泛型的简单实现:

private PersonResult resultMethodPerson(List<Person> listOfData) {
return EngineFactory.getEngine().getPersonResult(listOfData);
}

private CarResult resultMethodCar(List<Car> listOfData) {
return EngineFactory.getEngine().getCarResult(listOfData);
}

关于java - 如何使用传入的通用对象列表并通过 Java 方法返回通用对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58106136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com