带有类型参数的接口有什么用途?他们真的用了什么?我的理解是正确的。 比方说,我有这个接口界面类型参数的用法是什么?
public interface Moveable <Person>{
void move(double x, double z);
}
这是否意味着,只有那些类型的人可以使用对象/实现这个?
带有类型参数的接口有什么用途?他们真的用了什么?我的理解是正确的。 比方说,我有这个接口界面类型参数的用法是什么?
public interface Moveable <Person>{
void move(double x, double z);
}
这是否意味着,只有那些类型的人可以使用对象/实现这个?
这不是典型的模式,在你的情况下,类型参数没有做任何事情。这是一个更好的例子。
public interface Movable<T> {
T move();
}
现在,你的代码将返回实施者指定的,而不是你刚才说的举动总是返回对象或其他一些更通用类的类型。
编辑:你的界面
public MyMover implements Movable<Truck> {
public Truck move(){
return new Truck();
}
}
你真的不能限制实施者是某些类型。如果需要,您可以限制它by package。也许抽象类会为你更好地工作。
Does this mean that only objects that are Type Person can use implement this?
不,不完全是,通用在接口使用,如果它是在一个正常的课堂上使用是一样的。它指定接口将包含/操作的对象类型。
想想你是如何申报ArrayList
的。您需要指定ArrayList
将包含的对象类型,因为它以不同方式处理每种类型的对象。
在您声明的接口中,您所说的实现此接口的类只能保存/处理Person
类型的对象。
有关泛型的更多信息,请点击此链接:
我怎样才能限制使用此接口的其他对象?我应该添加一个上限?像T延伸可比?其中只有实现可比较的类或对象才能够使用此接口?你能提供一个你创建的界面的例子吗? – user962206 2012-07-06 04:18:28
@ user962206:阅读[教程](http://docs.oracle.com/javase/tutorial/java/generics/bounded.html)的时间? – vanza 2012-07-06 04:21:02
@jjathman是正确的。因为,如果您稍后决定要扩大其使用范围,那么在界面中指定类型并不能提供非常可扩展的代码。你不需要'限制它的使用'必然OP,只是控制通过你的代码使用它的东西。 – 2012-07-06 04:25:04