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这个返回类型中 <T> 是什么意思 ? 的全部内容, 来源链接: utcz.com/p/944905.html