Java中 非泛型类 定义泛型方法有什么用?

Java中 非泛型类 定义泛型方法有什么用?

问题描述:

Arrays类是非泛型的,但是有一个泛型方法
public static Stream stream(T[] array)

请纹正确的打开方式是怎样的?

大家都理解错了我的意思了

我问的是:

非泛型类里面定义泛型方法的意义是什么,而不是你们告诉我,要让类也是泛型。

Java的泛型,只是为了程序员编写方便,以及在编译的时候做类型检查,在实际运行当中,会把泛型的印记擦掉,相当于一个Object类型。

同样,泛型方法,也只是为了程序员编写的方便(可以不用做对象转化),以及编译时类型检查而已,运行时和实际的Object类型没有任何差别。

本例中,你创建的对象,应该是没有带泛型的,实际在调用方法时再带:
1. 对象初始化:new MyTest()。
2. 方法调用:MyTest test = new MyTest(); test.fun(1);

对于构造方法你没有泛型,Public class MyTest {

}

你的类并没有声明泛型,你应该是new MyTest(),如果你要是想要你的这种方式需要改为

 public class <T> MyTest {

    public <T>T fun(T t) {
            return t;
    }
}

new MyTest()是创建新的对象,这个过程默认调用不带参数的构造方法MyTest ();
而这个构造方法你没有定义,于是自动被创建了,这个自动被创建的构造方法没有泛型。
你定义泛型的方法fun()只是一个可调用的方法,和new MyTest()没有关系。
fun()方法实际上没有被调用。

这个构造方法你没有定义,于是自动被创建了

缺构造方法 自动构建了