我刚刚从一本教科书中学习 Java 中的泛型,其中讨论了一个类GenericStack<E>
实施与ArrayList<E>
.
因为为了创建字符串堆栈,您使用
GenericStack<String> = new GenericStack<String>()
or
GenericStack<String> new GenericStack<>()
因此不应该的构造函数GenericStack
被定义为public GenericStack<E>()
, or public GenericStack<>()
?答案是不。它应该被定义为public GenericStack()
.
为什么是这样?显然,构造函数可以轻松地从类声明中推断出类型,但考虑到 Java 的冗长,我有点困惑为什么<E>
或者简单地<>
形式主义在这里彻底破除了。
这有两个部分:
为类定义给出的泛型类型参数在类本身中可用。
您可以拥有特定于各个方法(包括构造函数)的泛型类型。
看下面的例子:
package snippet;
import java.util.ArrayList;
public class Y<E> extends ArrayList<E> {
public <T> Y(T t) {
}
}
作为类型E
可供全班同学使用,类型T
仅在构造函数内有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)