Java 泛型和类型

标签 java generics types

我不确定这是否可能,但如果可以的话,这会对我有很大帮助:

给定:

public interface Foo<T> {

    public void onUpdate(T t);
}

如果我有一个实现 Foo 的类的实例我可以获得泛型类型吗?

public void someMethod(byte[] bytes) {
    /* 
     * this.bar implements Foo<ExampleType>
     *
     * I want to convert bytes to ExampleType using GSON but don't know the type.
     *
     * this.bar.onUpdate(...)
     */ 
}

我是否可以获取创建 this.bar 实例时使用的泛型类型?

最佳答案

您无法在 Java 中获取泛型类型,由于类型删除,该信息在运行时不可用。

您可以为具体类型设置单独的接口(interface),例如,

interface FooExampleType extends Foo<ExampleType>{   

}

另外我想指出的是,在泛化接口(interface)之后,如果您觉得需要获取泛型参数的类型,那么您的代码设计就有问题。如果您在代码中遵循正确的多态行为,那么在泛型之后您应该不需要获取类型。

关于Java 泛型和类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19440360/

相关文章:

java - Android - 滚动停止后如何滚动到 ScrollView 的开头或结尾?

performance - GWT 中大型数值数组的高效表示

java - 将大量小文件读入内存的最快方法是什么?

arrays - 无法在函数内将 [Double] 转换为 Double

java - 为什么 bean 中的环境看不到集成上下文中源的属性?

java - 网格中的 GXT 复选框

Java泛型

java - 关于类型转换、静态和实例的泛型查询

Java 属性表

java - 实现多个通用接口(interface)