在Java中,声明多重有界类型时,逗号和&符都有效吗?

class MyClass <T extends OtherInterface, SomeInterface>

class MyOtherClass <T extends OtherInterface & SomeInterface>

最佳答案

正如其他人指出的那样:

class MyOtherClass <T extends OtherInterface & SomeInterface>

定义一个乘有界类型参数。如果使用MyOtherClass,则必须给它提供同时实现OtherInterfaceSomeInterface的类型。

但是,这没有定义乘有界类型参数:
class MyClass <T extends OtherInterface, SomeInterface>

它定义了具有两个类型参数的泛型。第一个必须实现OtherInterface。第二个可以是任何东西。和...一样
class MyClass <T extends OtherInterface, U>

除了您将其命名为SomeInterface而不是U。 (惯例是类型参数通常是单个大写字母,有时是一个大写字母和一个数字或一个简短的大写标识符。但是编译器不在乎。它不会考虑标识符,以确定您确实将其视为接口(interface)。)

10-07 13:54