为名为 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)的扩展。