java这个返回类型中 <T> 是什么意思 ?

返回类型如果为
Predicate<T>
那我看得懂 ,但是前面 还有 一个 <T> , 是什么意思 ?


回答:

这个是Java泛型方法返回值的语法,需要在返回类型前声明自己所使用的泛型类型。

下面解释为什么isEqual需要写前面的<T>而图片上面的or方法不需要:

Predicate类本身是一个泛型类,在声明时使用了Predicate<T>

or的签名为default Predicate<T> or(Predicate<? super T> other),这是一个成员函数,这里的T和类的T是同一个类型。在类被实例化后,T拥有了具体的类型(假设是T1),在这个实例上调用成员函数,成员函数or返回值的类型也就确定了是Precicate<T1>

但由于isEqual是类方法,它无法获取到类Predicate<T>中的类型T,所以这个T是一个新的类型,只是恰好和类名称Predicate<T>中的T名字相同。如果不声明<T>,编译器会抱怨不知道Predicate<T>中的T是什么。

事实上,即使是成员方法,也可以在返回值前面添加<T>来覆盖泛型类的泛型类型T,例如可以声明 default <T> Predicate<T> or(Predicate<? super T> other)。(当然这种情况下最好使用另一个类型标识符)

以上是 java这个返回类型中 &lt;T&gt; 是什么意思 ? 的全部内容, 来源链接: utcz.com/p/944905.html

回到顶部