1

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

鉴于:

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

4

1 回答 1

2

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

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

interface FooExampleType extends Foo<ExampleType>{   

}

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

于 2013-10-18T02:05:36.020 回答