【发布时间】:2013-02-24 11:09:51
【问题描述】:
我需要在客户端代码中使用泛型类及其类型参数。
public class Usable {
...
}
public interface User<T extends Usable> {
public void use(T usable);
}
//client
public class UserDemo {
public void demo() {
Usable usable = getUsable(); //returns Usable
User<? extends Usable> user = getUser(); //returns User<? extends Usable>
user.use(usable); //compilation error.
}
public Usable getUsable() {
....
}
public User<? extends Usable> getUser() {
....
}
}
编译错误是期望的类型是<? extends Usable>,但传递的类型是Usable。我该如何解决这个问题?约束是:
- 客户端代码(
UserDemo) 只能在User和Usable(不是它们的子类型)上工作。 - 用户只能处理类型为
Usable子类型的对象。
【问题讨论】:
-
getUsable的签名是什么?你也用了两次,所以我想有一个错字。同时提供其他方法的签名。 -
这段代码有不少错别字。请清理干净。
-
用 getUser() 和 getUsable() 的定义更新了代码并更正了拼写错误。
标签: java generics inheritance interface