检查参数中的类是否等于所需的类(instanceOf)。试图使泛型类

时间:2019-02-19 19:01:39

标签: java android

逻辑是,作为参数,我得到了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;
}

1 个答案:

答案 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”的参数