gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:52:33 26 4
gpt4 key购买 nike

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

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/

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