我不确定这是否可能,但如果可以的话,这会对我有很大帮助:
给定:
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/