带有类型参数的接口有什么用?

时间:2012-07-06 04:07:35

标签: java generics interface

带有类型参数的接口有什么用?它们真正用于什么?我的理解是正确的。 假设我有这个界面

public interface Moveable <Person>{
    void move(double x, double z);
}

这是否意味着只有Type Person的对象可以使用/实现它?

2 个答案:

答案 0 :(得分:7)

这不是典型的模式,在你的情况下,type参数没有做任何事情。这是一个更好的例子。

public interface Movable<T> {
    T move();
}

现在你的代码将返回实现者指定的类型而不是你只是说移动总是返回对象或其他更通用的类。

编辑:

public MyMover implements Movable<Truck> {
    public Truck move(){
        return new Truck();
    }
}

您无法将界面的实施者限制为某些类型。如果需要,您可以将其限制为by package。也许一个抽象类对你来说会更好。

答案 1 :(得分:1)

Does this mean that only objects that are Type Person can use implement this?

不,不完全是,接口中使用的泛型与在普通类中使用的相同。它指定接口将包含/操作的对象类型。

想一想你如何申报ArrayList。您需要指定ArrayList将包含哪种类型的对象,因为它以不同方式处理每种类型的对象。

在你的接口声明中,你说实现这个接口的类只会保存/操作Person类型的对象。

有关泛型的更多信息,请查看以下链接:

Oracle: Generics