java api定义了几个具有相同名称的泛型和非泛型 - 比如LinkedList等.它们都使用相同的语句进行了重新分区import java.util.LinkedList;.但是在一个包中,.java文件中只能有一个公共类(具有相同的名称).
那么我们可以得到同样的效果吗?我尝试了以下代码:
package org.****.ai.ass1.part1;
import java.util.LinkedList;
public abstract class Test extends LinkedList { }
//public abstract class Test<E> extends LinkedList<E> { }
Run Code Online (Sandbox Code Playgroud)
没有评论,我收到以下错误:The type Test is already defined.但是,如果我评论另一个,那么这两行都会编译.那么java api是如何做到的呢?
由于Java实现泛型(Google for type erasure)的方式,LinkedList<T>并且LinkedList表示完全相同的类型.无法使用相同的完全限定名称声明两种不同的类型,一种是通用的,另一种是非类型.