为什么在泛型类(Java)的构造函数中提供类型参数是错误的?

我只是从教科书中学习Java中的泛型,它讲的是GenericStack< E>类.用ArrayList< E>实现.

因为为了创建一个字符串堆栈,您可以使用

GenericStack<String> = new GenericStack<String>()

要么

GenericStack<String> new GenericStack<>()

因此不应该是构造函数
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) {
    }
}

如果类型E可用于整个类,则类型T仅在构造函数内有效.

上一篇:Python中的单引号,双引号和三引号有什么区别?


下一篇:Kettle报错OPTION SQL_SELECT_LIMIT=DEFAULT