读书人

Guice TypeLiteral兑现学习(Java匿名

发布时间: 2012-10-27 10:42:26 作者: rapoo

Guice TypeLiteral实现学习(Java匿名内部类泛型编译巧合)
Guice TypeLiteral研究

Guice对绑定泛型的类使用了一个小技巧。那就是通过TypeLiteral利用Java匿名内部类来获取绑定具体的Runtime时候的类型参数信息。

一段取类型参数的代码来自于:TypeLiteral.java line 98












TypeLiteral.get(SomeObject.class).getFieldType(SomeObject.class.getField("someField"));

这样就可以得到Field的genericType,而且能得到正确的type argument。 4 楼 liusu 2009-06-16 恩。。 刚刚试验了一下。。。 其实这还是保存在编译时候的“字面量”(这个词不晓得合适不合适)。

public class SomeObjectImpl extends SomeObject<String, String> {
}

泛型的字面量刚刚好是String,String而不是K,V,所以正确取得了。

谢了 :)

读书人网 >软件架构设计

热点推荐