繁体   English   中英

在Java中,如何实现返回Class的方法 <List<String> &gt;

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM