我有一个这样定义的方法:
public <T> T methodName(Class<T> clazz)
我的单元测试我错误地像这样测试它:
Class clazz = Tag.class;
Tag tag = methodName(clazz);
这应该会产生编译时错误(当我尝试使用 javac 编译它时会产生编译时错误),但 eclipse 允许它编译。</p>
我真的不明白为什么 eclipse 允许这段代码编译,有人可以提供一些信息为什么这会在 eclipse 中编译吗?
eclipse 版本是:Eclipse Java EE IDE for Web Developers。版本:Luna Service Release 2 (4.4.2) Build id:20150219-0600
使用的java版本为:(Oracle)jdk 1.7.0_51。
最佳答案
Eclipse 使用 different compiler than the JDK - Eclipse Compiler for Java (ECJ) 与 Oracle 的(以前是 Sun 的)javac。在编译模式、Java 语言规范的解释和生成的字节码中可能存在细微的差异,当然,还有不同的错误。您似乎刚刚遇到了其中一个差异。
关于java - Eclipse类型删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32317458/