编译以下Java代码:
interface Interface1{}
interface Interface2{}
class MyClass1<T extends Interface1 & Interface2>{}
此外,还编译了以下代码:
class AClass{}
interface Interface3{}
class MyClass2<T extends AClass & Interface3>{}
以下代码将给我一个编译错误:
interface Interface4 {}
class MyClass3<T, S extends T & Interface4> {}
因此,看起来,如果其中一个边界类型本身是类型参数,就不可能有多个边界.但为什么呢?
据我所知,如果声明了多个边界,那么最多一个边界可能是一个类(其他所有边界都是接口),并且它必须是第一个边界.
但是,既然在我的例子中Interface
是一个接口,为什么编译器会抱怨呢?毕竟,t是接口还是类都不应该有任何区别.
我试图在网上找到答案,但显然我的谷歌搜索能力还不够.我很想了解这里发生了什么.