Java Eclipse类型擦除

Java Eclipse类型擦除,java,eclipse,type-erasure,Java,Eclipse,Type Erasure,我有一个定义如下的方法: public <T> T methodName(Class<T> clazz) Class clazz = Tag.class; Tag tag = methodName(clazz); 这应该会产生一个编译时错误(当我试图用javac编译它时,它会产生一个编译时错误),但是eclipse允许它编译 我真的不明白为什么eclipse允许编译这段代码,有人能提供一些信息说明为什么这段代码会在eclipse中编译吗 eclipse版本是:面向We

我有一个定义如下的方法:

public <T> T methodName(Class<T> clazz)
Class clazz = Tag.class;
Tag tag = methodName(clazz);
这应该会产生一个编译时错误(当我试图用javac编译它时,它会产生一个编译时错误),但是eclipse允许它编译

我真的不明白为什么eclipse允许编译这段代码,有人能提供一些信息说明为什么这段代码会在eclipse中编译吗

eclipse版本是:面向Web开发人员的eclipse Java EE IDE。版本:Luna Service Release 2(4.4.2)内部版本id:20150219-0600


使用的java版本是:(Oracle)JDK1.7.0_51。

Eclipse使用-Eclipse编译器for java(ECJ)而不是Oracle(以前是Sun)的javac。编译模式、Java语言规范的解释和生成的字节码可能略有不同,当然还有不同的bug。您似乎遇到了其中一个差异。

对于Eclipse Mars,这无法编译。听起来像是Eclipse bug。(也存在于较旧的Oracle javac中)