Java 带类型参数的接口有什么用途?
带类型参数的接口有什么用途?它们的真正用途是什么?我的理解正确吗。 假设我有这个接口Java 带类型参数的接口有什么用途?,java,generics,interface,Java,Generics,Interface,带类型参数的接口有什么用途?它们的真正用途是什么?我的理解正确吗。 假设我有这个接口 public interface Moveable <Person>{ void move(double x, double z); } 公共接口可移动{ 无效移动(双x,双z); } 这是否意味着只有Person类型的对象才能使用/实现此功能?这不是典型的模式,在您的情况下,类型参数没有任何作用。这里有一个更好的例子 public interface Movable<T>
public interface Moveable <Person>{
void move(double x, double z);
}
公共接口可移动{
无效移动(双x,双z);
}
这是否意味着只有Person类型的对象才能使用/实现此功能?这不是典型的模式,在您的情况下,类型参数没有任何作用。这里有一个更好的例子
public interface Movable<T> {
T move();
}
可移动公共接口{
T move();
}
现在,您的代码将返回实现者指定的类型,而不是说move始终返回object或其他更通用的类
编辑:
public MyMover实现可移动{
公共卡车移动(){
归还新卡车();
}
}
您不能将接口的实现者限制为特定类型。如果你愿意,你可以限制它。也许抽象类更适合您
这是否意味着只有Person类型的对象才能实现此功能?
不,不完全是这样,泛型在接口中的使用与在普通类中的使用完全相同。它指定接口将包含/操作的对象类型
想一想如何声明ArrayList
。您需要指定ArrayList
将包含的对象类型,因为它处理每种类型的对象的方式不同
在接口声明中,您是说实现此接口的类将只保存/操作Person
类型的对象
有关泛型的更多信息,请查看以下链接:
如何使用此界面限制其他对象?我应该加一个上限吗?像T?其中只有实现Compariable的类或对象才能使用此接口?你能提供一个你创建的界面的例子吗?@user962206:time to read a?@jjathman是正确的。照目前的情况,如果您以后决定要扩展它的使用范围,那么在接口中指定类型不会产生非常可伸缩的代码。你不需要限制它的使用,只需要通过你的代码来控制它的用途。我为你添加了一个非常做作的例子,但是Java接口并不能真正做到你想让它们做的事情。
public MyMover implements Movable<Truck> {
public Truck move(){
return new Truck();
}
}