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

Java 扩展ArrayList并使用泛型实现接口的正确方法,java,generics,interface,Java,Generics,Interface,我需要实现一个接口,该接口有两个泛型类型参数和一个方法,其中一个泛型类型作为参数,另一个泛型类型作为返回类型。这就是我实现它的方式,但我不知道这是否是正确的方法 public interface Evaluate<K, T> { T use(K k); } 公共接口评估 { T使用(K); } 此外,我还需要扩展Java的ArrayList并向其中添加方法,如map。map()方法需要获取一个Evaluate类型的参数并返回一个新列表。我不知道是否应该实现接口,

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

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

}
公共接口评估
{
T使用(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)
    {

    }
}
公共类数组扩展了java.util.ArrayList
{
公共阵列列表映射(计算f1)
{
}
}
执行以下任一操作:

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
    }
}
公共类数组扩展了java.util.ArrayList{
T使用(K){
//实施
}
public java.util.ArrayList映射(){
//在这里某处使用(K)
}
}

公共类数组扩展了java.util.ArrayList{
public java.util.ArrayList映射(求值){
//使用此处的某个位置进行评估
}
}

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

您的接口称为Evaluate,您正在实现和获取函数。什么是求值?什么是函数?乍一看,你的代码看起来不错,你的实际问题是什么?我编辑了代码,因为我犯了一个错误。你的接口实现仍然是错误的。你可以修复一件事。如果您正在扩展Evaluate接口,则不需要在map中传递Evaluate实例(数组类可以简单地使用自己的实例)。如果您想通过它,就不需要接口实现。您所说的“您的实现没有在接口中声明t use(K)的定义”是什么意思?接口中的方法不应该留有空的主体?还有,为什么它会给我一个错误:ArrayList无法解析为类型?您编写了
implements Evaluate
,而您的
Array
类不是抽象的。这意味着在
Array
类中必须有一些
T使用(kk)
实现,否则文件将无法编译。接口必须只有声明,而不是抽象实现必须有声明。我添加了missing
java.util.
,但是,老实说,当我看到有人在与如此简单的编译器错误作斗争时,我想知道他是否应该跳进更高级的东西,比如编写自己的泛型类。谢谢你的帮助。
public class Array<K, T> extends java.util.ArrayList<T> {
    public java.util.ArrayList<T> map(Evaluate<K,T> evaluate) {
        // use evaluate somewhere here
    }
}