![](/img/trans.png)
[英]Java: How do I implement a method that takes 2 arrays and returns 2 arrays?
[英]In Java, how do I implement a method that returns Class<List<String>>
我要扩展的通用类之一要求我返回正确的通用类型的Class对象。 我知道在正常情况下如何执行此操作,但是当我的班级包含通用列表时却不知道。
例如,我知道如何实现下面的第一个方法,但是不知道第二个方法:
public Class<String> getStringKlass() {
return String.class;
}
public Class<List<String>> getStringListKlass() {
???
}
很简单
List.class
通用信息在那里供编译时使用。 对于运行时,泛型将被忽略,而仅是类的类型很重要。
由于类型擦除,因此无法执行此操作:在Java中,如果您具有通用类型(此处为List<T>
),则在编译时可以使用List<String>
, List<Date>
等。但是,在运行时,所有这些类型都由相同的Class
对象表示。
换句话说,以下程序将输出true
:
ArrayList<String> list = new ArrayList<String>();
System.out.println(list.getClass() == ArrayList.class);
我获得的最接近的结果是创建一个扩展某些List<String>
的新类。
public class ListOfStrings extends ArrayList<String> { }
然后使用<? extends List<String>>
在您的方法中<? extends List<String>>
而不只是List<String>
:
public Class<? extends List<String>> getStringListKlass()
{
return ListOfStrings.class;
}
但是,我不知道这之后可能在您的代码中带来什么样的麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.