我有一个像这样的方法-

public IntSequence subSequence(int index, int size) {
//IntSequence is an interface and currently this thing is inside a class that's
//implementing it

    ArrayList<Integer> valuelist = new ArrayList<>();
    for(int i = a1; i <= a2 + a1; i++)
    {
        if((a1 + a2) <= a.length)
        valuelist.add(a[i]);
    }
    return valuelist;
}


我的问题是,我只想返回整数序列,但是我在这里返回的是一个ArrayList,编译器说不能从IntSequence类型转换为ArrayList。

(不允许更改方法的参数)

感谢您确认问题!

编辑:

这是我的IntSequence接口-

public interface IntSequence {

   int length();

   int get(int index);

   void set(int index, int value);

   IntSequence subSequence(int index, int size);
}

最佳答案

没有看到IntSequence,很难给出具体答案。但是您可能想要执行以下操作:

class ArrayIntSequence implements IntSequence {

    private ArrayList<Integer> arr;

    public ArrayIntSequence (ArrayList<Integer> arr) {
        this.arr = arr;
    }

    public ...
    // provide bodies for all the methods defined in IntSequence, implemented
    // using "arr"

}


然后您在return中的subSequence语句变为

return new ArrayIntSequence(valuelist);


编辑:现在,您已经包括了IntSequence的定义,使用类似的length方法,getsetArrayList的实现非常简单,看起来您已经拥有了subSequence,除了可以调整它以使用ArrayList而不是数组。

07-25 22:46