逗号或带有多种有界类型的&符号?

ter*_*ex9 30 java types

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

class MyClass <T extends OtherInterface, SomeInterface>

class MyOtherClass <T extends OtherInterface & SomeInterface>
Run Code Online (Sandbox Code Playgroud)

ajb*_*ajb 50

正如其他人指出的那样:

class MyOtherClass <T extends OtherInterface & SomeInterface>
Run Code Online (Sandbox Code Playgroud)

定义了一个乘法有界类型参数.如果你使用MyOtherClass,你必须给它一个实现两者OtherInterfaceSomeInterface.

但是,这并不能定义一个乘法界类型参数:

class MyClass <T extends OtherInterface, SomeInterface>
Run Code Online (Sandbox Code Playgroud)

它定义了一个带有两个类型参数的泛型.第一个必须实施OtherInterface.第二个可以是任何东西.它和...一样

class MyClass <T extends OtherInterface, U>
Run Code Online (Sandbox Code Playgroud)

除了你命名它SomeInterface而不是U.(惯例是类型参数通常是单个大写字母,或者有时是大写字母和数字或短大写标识符.但编译器并不关心.它不会查看形式标识符,以确定你真的把它当作一个接口.)


M S*_*ach 6

当 B2 和 B3 应该是接口时,可以进行多个边界<T extends B1 & B2 & B3>。B1可以是简单的类或接口