Yib*_*ang 2 java oop generics syntax constructor
我只是从一本教科书中学习Java中的泛型,在那里它讨论了GenericStack<E>用一个实现的类ArrayList<E>.
因为为了创建一个字符串堆栈,您可以使用
GenericStack<String> = new GenericStack<String>()
Run Code Online (Sandbox Code Playgroud)
要么
GenericStack<String> new GenericStack<>()
Run Code Online (Sandbox Code Playgroud)
因此,不应该将构造函数
GenericStack定义为public GenericStack<E>(),或public GenericStack<>()?答案是不.它应该被定义为public GenericStack().
为什么是这样?显然,构造函数可以很容易地从类声明中推断出类型,但考虑到Java的冗长,我有点迷惑为什么<E>或者只是<>形式主义完全摆脱了这里.
这有两个部分:
为类定义提供的泛型类型参数在类本身中可用.
您可以拥有特定于各个方法的泛型类型(包括构造函数).
请看以下示例:
package snippet;
import java.util.ArrayList;
public class Y<E> extends ArrayList<E> {
public <T> Y(T t) {
}
}
Run Code Online (Sandbox Code Playgroud)
如果类型E可用于整个类,则类型T仅在构造函数中有效.
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |