< >
中的班级名称是什么意思?
public class classA extends classB <classC>
我知道继承,但确切地想知道< >
classB <classC>
的含义
仅供参考:classA.java
和classB.java
位于项目的同一文件夹下。 classC.java
位于项目的不同文件夹中。
答案 0 :(得分:2)
以下是
中接口List
和Iterator
定义的摘录。
package java.util :
public interface List <E> {
void add(E x);
Iterator<E> iterator();
}
public interface Iterator<E> {
E next();
boolean hasNext();
}
这个代码应该都很熟悉,除了尖括号中的东西。这些是接口List
和Iterator
的正式类型参数的声明。
类型参数可以在整个泛型声明中使用,几乎可以使用普通类型(虽然有一些重要的限制;请参阅精细打印一节。
在简介中,我们看到了泛型类型声明List的调用,例如List<Integer>
。在调用(通常称为参数化类型)中,所有出现的形式类型参数(在本例中为E
)都被实际类型参数(在本例中为Integer
)替换。
您可能会认为List<Integer>
代表的是E
已被Integer
统一替换的列表版本:
public interface IntegerList {
void add(Integer x);
Iterator<Integer> iterator();
}
这种直觉可能会有所帮助,但也会产生误导。
这很有用,因为参数化类型List<Integer>
确实具有看起来像这种扩展的方法。
这是误导性的,因为泛型的声明从未以这种方式实际扩展。没有多个代码副本 - 不是源代码,不是二进制代码,不是磁盘而不是内存。如果您是C++ programmer
,您就会明白这与C++ template
非常不同。
泛型类型声明一劳永逸地编译,并转换为单个class
文件,就像普通的class
或interface
声明一样。