在Java / GWT中绕过类型擦除

时间:2014-10-21 16:23:47

标签: java generics gwt type-erasure

在GWT项目中,我有一个带有此签名的方法:

public <H> HandlerRegistration addHandler(Event.Type<H> type, H handler)

在该方法中,我想要包含一些日志消息;具体来说,我想知道<H>所以我可以记录传递的内容。 Java泛型类型擦除,正如它的工作方式,将其编译出来并有效地变为Object。而且,作为GWT,我不能使用一些更高级的反射技术,因为它们与GWT不兼容。所以,如果我看了type.getClass().getName(),就没有提到<H>是什么。

有什么方法吗?

1 个答案:

答案 0 :(得分:1)

我会在getClass().getName()而不是handler上致电type。无论处理程序实现还是事件类型,这都应该有效。您将获得表示运行时类<H>的Class对象。

http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#getClass%28%29