java - 如何使此方法对所有传递的类类型通用?

标签 java generics arraylist reflection

我想让这个方法对所有类类型通用:

public static void printListSample(List<Class<?>> dateExtend) {
    System.out.println("dateExtend size: "+dateExtend.size());
    if(dateExtend.size() > 0){
        for(Class<?> mp : dateExtend){
            System.out.print("\n print entry - ");
            if(mp.getDate() != null){
                String dateDb = new SimpleDateFormat("dd.MM.yyyy.").format(mp.getDate());
                System.out.print("value: "+dateDb);
            }
        }
    }
    System.out.println();
}

通知类< ? > - 现在像这样它不起作用;但我认为我走在正确的道路上。

我想动态地转换参数中传递的类,然后动态地将其转换为for循环(所以我不必执行if(SomeClass的实例..)

如何做到这一点?我需要示例代码,真的不知道如何编写。

编辑: getDate 是我作为参数传递的自定义对象的方法。因此,Java 需要动态地找出传递的对象是什么类类型。

我想编写通用方法来打印任何传递类型的列表(或ArrayList):

<MyClass> or <String> or <SomeOtherClass>, 

所以我不必担心类型,并且转换会自动完成。

编辑(2):我想确定类类型 INSIDE 方法(我想我可以从以下位置获取它:

<T> or <?> 

包含我正在发送的类(class)信息)?

最佳答案

Class实例有 getDate()方法就可以了。

我怀疑你需要类似 List<? extends SomeClassWithAGetDateMethod> 的东西作为参数:

public static void printListSample(List<? extends SomeClassWithAGetDateMethod> dateExtend) {
    System.out.println("dateExtend size: "+dateExtend.size());
    if(dateExtend.size() > 0){
        for(SomeClassWithAGetDateMethod mp : dateExtend){
            if (mp.getDate() != null) {
                ...
            }
        }
    }
}
<小时/>

顺便说一句,您不需要检查 List 是否在迭代之前为空:只需迭代它,如果它没有元素,则循环中不会运行任何内容。

if (list.size() > 0) { for (ElementType e : list) { ... } }

相当于:

for (ElementType e : list) { ... }

(而且,!list.isEmpty() 比检查大小是否大于零更有效(并且效率不低)。

关于java - 如何使此方法对所有传递的类类型通用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37051830/

相关文章:

java - 删除 Java 命令行界面的 args[] 中连续的第 0 个条目?

java hashmap查询

java - 错误 : java. lang.NoSuchMethodError : org. objectweb.asm.ClassWriter.<init>(I)V

c# - 什么时候使用哪种类型的泛型接口(interface)定义?

Java 泛型 - 实例化通配符类型的方法

java - 将数组元素添加到 2d ArrayList

java - Broadleaf Commerce Tomcat 安装

java - eclipse - hibernate : No suitable driver found for jdbc:mysql://localhost:3306/hibernatedb

java - 获取应用了类型参数的已实现接口(interface)的 Type 实例

Java 从 listArray 中删除条目