我有一个抽象类Chainable,它包含一个虚拟静态方法,如下所示:

public abstract class Chainable implements Comparable<Chainable> 
{
    public static ArrayList<Chainable> create_index(ArrayList<Chainable> chain)
    {
        return new ArrayList<Chainable>();
    }
}

这个静态方法在其继承者中被重写,即在Note类中:

public class Note extends Chainable
{
    public static ArrayList<Chainable> create_index(ArrayList<Chainable> chain)
    {
        return sort(quantize(chain));
    }
}

现在,我有一个类Chain,它接受一个Chainable参数T并包含一个Chainables的ArrayList . 我想为链编写一个create_index方法,如下所示,它将调用Chainable T上定义的特定方法,该方法作为参数传入:

public class Chain<T extends Chainable> 
{
    private ArrayList<T> list;

    public ArrayList<Chainable> create_index()
    {
        return T.create_index(list);
    }
}

但是,我收到错误“Chainable中的create_index(java.util.ArrayList)无法应用于(java.util.ArrayList) . ”我不明白这一点,因为我已经指定T在Chain的类定义中是一个Chainable . 你能告诉我这里发生了什么吗?