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