在Java中,声明多重有界类型时,逗号和&符都有效吗?
class MyClass <T extends OtherInterface, SomeInterface>
class MyOtherClass <T extends OtherInterface & SomeInterface>
最佳答案
正如其他人指出的那样:
class MyOtherClass <T extends OtherInterface & SomeInterface>
定义一个乘有界类型参数。如果使用
MyOtherClass
,则必须给它提供同时实现OtherInterface
和SomeInterface
的类型。但是,这没有定义乘有界类型参数:
class MyClass <T extends OtherInterface, SomeInterface>
它定义了具有两个类型参数的泛型。第一个必须实现
OtherInterface
。第二个可以是任何东西。和...一样class MyClass <T extends OtherInterface, U>
除了您将其命名为
SomeInterface
而不是U
。 (惯例是类型参数通常是单个大写字母,有时是一个大写字母和一个数字或一个简短的大写标识符。但是编译器不在乎。它不会考虑标识符,以确定您确实将其视为接口(interface)。)