This question already has an answer here:
Is there a way to find the type of a template (generic) parameter in Java?
(1个答案)
6年前关闭。
我不确定这是否可能,但如果可以,这对我有很大帮助:
鉴于:
如果我有一个实现
创建
我还要指出的是,在泛化了接口之后,如果您感觉需要获取泛型参数的类型,那么代码的设计就有些问题了。如果您在代码中遵循适当的多态行为,那么在生成代码之后,您就不会感到需要获取类型。
(1个答案)
6年前关闭。
我不确定这是否可能,但如果可以,这对我有很大帮助:
鉴于:
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 FooExampleType extends Foo<ExampleType>{
}
我还要指出的是,在泛化了接口之后,如果您感觉需要获取泛型参数的类型,那么代码的设计就有些问题了。如果您在代码中遵循适当的多态行为,那么在生成代码之后,您就不会感到需要获取类型。