java - 获取与 extends ArrayList<T> 一起使用的类型的类名?

标签 java

我有以下内容:

public class Foo<T extends Grok> extends ArrayList<T> {

}

如何在运行时找到T代表的类名?例如,假设我这样分配:

Foo<Apple> foo = new Foo<Apple>();

有没有办法让 Apple 作为 Foo 的构造函数中使用的类名?:

public Foo() {
    super();

    String classname = this.getTypeClassName(); // "com.me.Apple"
}

我可以只添加一个方法来设置类名,但更愿意在内部获取它,这样用户就不必这样做了,

谢谢

最佳答案

由于类型删除(Java 泛型模型的缺陷之一),这在一般情况下是不可能的。如果向 foo 传递一个 T 的实例,它可以检查该实例的类型,但不能保证它就是 T 而不是派生类型。由于您正在尝试访问构造函数中的类型,此时它不可能持有这样的实例,因此您必须通过构造函数传入一个苹果。

关于java - 获取与 extends ArrayList<T> 一起使用的类型的类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4189557/

相关文章:

java - MPAndroidChart BarChart - 条形内的垂直值

java - 创建 SOAP 请求时出现与命名空间相关的错误

java - 在java中使用axom-api解码X-JWT-Assertion

Java NoClassDefFoundError 与 Ant

java - 创建一副牌时出现编译错误

java - 为什么这段代码(IDE Eclipse)中没有抛出 EOFException?

java - 如何从命令行将参数传递给 gradle

java - 将 1's and 0' 排列在一个数组中

java - 从字节数组中获取 key

java - 为什么数据报套接字缓冲区大时,丢弃率高