我们可以在java中的同一文件/包中有两个类定义吗? class Node和类Node <t>

时间:2016-09-06 15:00:34

标签: java

我只是好奇,看看我们是否可以拥有两个不同类名相同的类定义,一个是泛型​​类型,另一个是泛型​​类型:

class Node {}

class Node <T>{}

在同一个文件中或在Java中的同一个包中。

2 个答案:

答案 0 :(得分:3)

不,这是不可能的。 Node <T>任何 T在编译时折叠为Node <java.lang.Object>(这称为类型删除),这与之无法区分Node

所以真的Node <T>Node是一样的,你的编译器应该抱怨你的源文件包含一个重复的类。

在这个以及许多其他方面,Java泛型是C ++模板的不良表现,其中可以(通过默认模板参数和模板专业化)。

答案 1 :(得分:1)

Java中的泛型是使用一种称为擦除的技术实现的。

所有类型参数信息都从运行时类型系统中删除。向其类询问参数化类型的对象将返回原始类型的类对象(例如,对于声明为List类型的对象的List。结果是,您无法在运行时询问对象是否是实例参数化类型或简单类型。

所以问题的答案是不可能的。

详细了解删除here