扩展ArrayList和使用泛型实现接口的正确方法

时间:2013-12-14 10:33:33

标签: java generics interface

我需要实现一个具有两个泛型类型参数的接口和一个方法,该方法将一个泛型类型作为参数,另一个泛型类型作为返回类型。这就是我实现它的方式,但我不知道它是否正确。

public interface Evaluate<K, T> 
{
      T use(K k); 

}

另外,我需要扩展Java的ArrayList并向其添加方法,例如map。 map()方法需要使用一个Evaluate类型的参数并返回一个新列表。我不知道是否应该实现接口以及如何在我的方法中实际传递参数。这是我到目前为止的尝试:

public class Array<K, T> extends java.util.ArrayList<T> implements Evaluate<K,T>
{
    public ArrayList<T> map(Evaluate f1)
    {

    }
}

1 个答案:

答案 0 :(得分:0)

要么:

public class Array<K, T> extends java.util.ArrayList<T> implements Evaluate<K,T> {
    T use(K k) {
        // implementation
    }

    public java.util.ArrayList<T> map() {
        // use(K) somewhere here
    }
}

public class Array<K, T> extends java.util.ArrayList<T> {
    public java.util.ArrayList<T> map(Evaluate<K,T> evaluate) {
        // use evaluate somewhere here
    }
}

您的实现没有在接口中声明的T use(K)的定义 - 您可以仅在抽象类或扩展另一个类的接口中使其未实现。此外,您的参数是原始的,因为您没有像map(Evaluate<K,T> f1)那样编写它(Java不会自动替换泛型参数)。