逻辑是,作为参数,我得到了1-Something.class,2-Listlist,3 String参数。因此,此方法的主要目标是:1)了解我们要寻找的类情况(if / else语句)2)在对象列表中借助循环,将在String参数的帮助下找到所需的ONE对象并返回这个过滤掉的对象。这是我的代码。但是我有一个问题:1)将参数中给定类与Something.class进行比较的正确方法是什么?2)如何对接收到的列表进行通用循环?
我的代码示例
private <T> Object searchNeededObject(Class<T> theClass, List<?> list, String param) {
Object result = null;
//Checking if needed class is Image.class
if (theClass instanceof Image) {
//Chacking in our list for needed object with help of param
for (Image neededImage : list) {
if (neededImage.getLinks().equals(param) || neededImage.getName().equals(param)) {
//Have found needed object
result = neededImage;
}
}
}
return result;
}
答案 0 :(得分:1)
将列表定为T型
List<T> list
要比较类,请使用equals方法,因为theClass不是实例
theClass.equals(Image.class);
因为for是T个物品,所以您需要为每个物品强制转换
private <T> Object searchNeededObject(Class<T> theClass, List<T> list, String param) {
Object result = null;
// Checking if needed class is Image.class
if (theClass.equals(Image.class)) {
// Chacking in our list for needed object with help of param
for (T item : list) {
if (item instanceof Image) {
Image neededImage = (Image) item;
if (neededImage.getLinks().equals(param) || neededImage.getName().equals(param)) {
// Have found needed object
result = neededImage;
}
}
}
}
return result;
}
在此示例中,“ instanceof”是多余的,因为列表类型限于类型为“ Class”的参数