Java 覆盖add的问题

Java 覆盖add的问题,java,arraylist,add,overriding,super,Java,Arraylist,Add,Overriding,Super,我正在编写一个程序,该程序应该对arrayList进行排序,但每当我重写add函数时,我都会收到这样一条消息:“SortedList中的add(Java.lang.String)无法在Java.util.List中实现add(E);试图使用不兼容的返回类型find:void required:boolean” 我真的不确定我做错了什么。下面是我的代码。提前谢谢 import java.util.ArrayList; import java.util.List; import java.lang.

我正在编写一个程序,该程序应该对arrayList进行排序,但每当我重写add函数时,我都会收到这样一条消息:“SortedList中的add(Java.lang.String)无法在Java.util.List中实现add(E);试图使用不兼容的返回类型find:void required:boolean”

我真的不确定我做错了什么。下面是我的代码。提前谢谢

import java.util.ArrayList;
import java.util.List;
import java.lang.String;

public class SortedList extends ArrayList<String>
{
    private ArrayList<String> a;

    public SortedList()
    {
        super();
    }
    public SortedList(int cap)
    {
        super(cap);
    }
    public void add(String x)
    {
        for(int i=0; i<a.size(); i++)
            if(x.compareTo(a.get(i))>=0 && x.compareTo(a.get(i+1))<=0)
                super.add(x);
    }
}
import java.util.ArrayList;
导入java.util.List;
导入java.lang.String;
公共类SortedList扩展了ArrayList
{
私人ArrayList a;
公共分类列表()
{
超级();
}
公共分类列表(内部cap)
{
超级(上限);;
}
公共无效添加(字符串x)
{

对于(int i=0;i=0&&x.compareTo(a.get(i+1))来说,从错误消息中可以明显看出

add方法需要返回一个布尔值true,请参见java文档

这似乎告诉您:“SortedList中的add(Java.lang.String)无法在Java.util.List中实现add(E);试图使用不兼容的返回类型find:void required:boolean”

改变
public void add(字符串x)

public boolean add(字符串x)


[还要使其实际返回布尔值]

仅供参考,您似乎试图同时使用组合并将其与继承混合。您的add方法无法工作,因为您正在比较委托中的给定字符串“a”,但调用super.add()。如果您添加的字符串应该是列表中的最后一个字符串,或者如果它是第一个添加的字符串,您还将获得ArrayOutOfBoundsException。它应该是:

@Override
public boolean add(String x) {
    boolean added = false;
    for(int i=0; i<(a.size()-1); i++) {
        if(x.compareTo(a.get(i))>=0 && x.compareTo(a.get(i+1))<=0) {
            a.add(i, x);
            added = true;
            break;
        }
    }
    // String is either the first one added or should be the last one in list
    if (!added) {
        a.add(x);
    }
    return true;
}
@覆盖
公共布尔加法(字符串x){
布尔加法=假;

对于(int i=0;i=0&&x.compareTo(a.get(i+1))的什么函数调用?共享堆栈跟踪。
@Override
public boolean add(String x) {
    boolean added = false;
    for(int i=0; i<(a.size()-1); i++) {
        if(x.compareTo(a.get(i))>=0 && x.compareTo(a.get(i+1))<=0) {
            a.add(i, x);
            added = true;
            break;
        }
    }
    // String is either the first one added or should be the last one in list
    if (!added) {
        a.add(x);
    }
    return true;
}