java - Eclipse类型删除

标签 java eclipse type-erasure

我有一个这样定义的方法:

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/

相关文章:

c - 仅当项目中发生更改时添加编译时间戳 (C)

java - 在方法和类中使用泛型和接口(interface)有什么区别

java - 具有不同 JPA 实现的数据库类型的不同映射

eclipse - 如何将特定键绑定(bind)到 Eclipse 中的不同启动配置?

java - 如何用动画改变 FrameLayout 的前景可绘制的 alpha?

java - Eclipse 中的平台特定代码

java - 泛型、类型删除和静态结构方法

Java - 获取泛型对象作为 String 泛型类型抛出异常

java - 如何在微调器中获取国家/地区名称和国家/地区调用 (ISD) 代码

java - public ClassName functionName(arguments){...},Java中这种结构的名称是什么?