为名为 MyType 的泛型类编写标头。该类应该有两个类型参数。第一个类型参数的上限应该是 Number 类。第二个类型参数的上限应该是 String 类。
看起来像这样正确吗?
public class MyType<T extends Number> {}
我将如何将第二个类型参数作为上限?我可以做extends Number extends String吗?
你这样声明
public class TestThis <T extends Number, X extends String> {}
你x extends String有效,记住 String 是一个最终类,你不能扩展它。Eclipse 给了我这个警告:
类型参数 X 不应受最终类型 String 的限制。最终类型无法进一步扩展
你误读了这个问题:它要求你给类两个类型参数,每个类型参数都有一个边界,而不是一个类型参数有两个边界。
例如这个类有两个类型参数T
和U
:
public class MyType<T, U> { }
我会留给你其他答案来增加界限。
编辑:请注意,如果您确实需要单个类型参数的多个上限,请使用&
它们来分隔它们:
<T extends B1 & B2 & B3>
但是由于Java没有多重继承,额外的上限只能是接口。在这里,B1
可以是类或接口,B2
而B3
必须是接口(参考:Java 教程)。
我将如何将第二个类型参数作为上限?我可以做extends Number extends String吗?
,
您可以添加第二个参数,用like分隔:
public class MyType<T extends Number, S extends String> {
}
虽然它看起来很奇怪,因为 String 是一个最终类,但您仍然可以将其扩展为上限。
声明看起来像:
MyType<Long,String> myType = new MyType<Long, String>();
如果A
上界为B
,则表示A extends B
。因此,您的声明应如下所示:
public class MyType<T extends Number, U extends String> {
...
}
你被要求有两个类型参数(不仅仅是你目前拥有的一个),因此是T
上面U
的。但我应该注意: String
isfinal
因此没有类型U
可以是String
(尽管U
仍然可以是String
)的扩展。