gpt4 book ai didi

java - 关于泛型方法的问题

转载 作者:行者123 更新时间:2023-11-29 06:24:27 24 4
gpt4 key购买 nike

我正在尝试将以下方法变成通用方法,结果被击中了。

public static MyObject[] getObjectFromList(List<MyObject> inputList) {
if (inputList != null && inputList.size() > 0) {
return inputList.toArray(new MyObject[inputList.size()]);
} else {
inputList = new ArrayList<MyObject>();
MyObject obj = new MyObject();
inputList.add(obj);
return inputList.toArray(new MyObject[inputList.size()]);
}
}

还有另一个类似的方法,但它是 MyObject2

public static MyObject2[] getObjectFromList(List<MyObject2> inputList) {
if (inputList != null && inputList.size() > 0) {
return inputList.toArray(new MyObject2[inputList.size()]);
} else {
inputList = new ArrayList<MyObject2>();
MyObject2 obj = new MyObject2();
inputList.add(obj);
return inputList.toArray(new MyObject2[inputList.size()]);
}
}

我如何将它作为一个单一的方法来获取任何对象(myobject,myobject2)列表和返回一个数组?

最佳答案

由于类型删除,您不能在不更改方法签名的情况下执行此操作。如果您可以传递一个标识所需类型的 Class 对象,您可以执行如下操作:

public static <T> T[] getObjectFromList(List<? extends T> inputList, Class<T> c) {
if (inputList == null || inputList.isEmpty()) {
inputList = new ArrayList<T>();
T obj = null;
try {
obj = c.newInstance();
} (Exception ex) {
throw new RuntimeException("Instantiation failed", ex);
}
inputList.add(obj);
}
return inputList.toArray(Array.newInstance(c, inputList.size()));
}

关于java - 关于泛型方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5178469/

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