3

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

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

这是否意味着只有类型为 Person 的对象才能使用 / 实现 this?

4

2 回答 2

7

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

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

现在您的代码将返回实现者指定的类型,而不是仅仅说 move 总是返回对象或其他更通用的类。

编辑:

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

您不能真正将接口的实现者限制为某些类型。如果你愿意,你可以通过包来限制它。也许抽象类更适合你。

于 2012-07-06T04:12:36.347 回答
1

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

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

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

在您的接口声明中,您说实现此接口的类将仅保存/操作类型的对象Person

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

甲骨文:泛型

于 2012-07-06T04:21:27.243 回答