あなたは同じシグネチャを持つaddメソッドをオーバーライドして、異なるタイプを返すことはできません。 add(T t)
メソッドはboolean
を返すようにCollection
インターフェイスに定義されているため、同じシグネチャを持つ型階層内のすべてのメソッドはboolean
を返す必要があります。
あなたはしかし、次のことができます。以上の引数を追加することにより
変更署名:
public class MyList<T> extends ArrayList<T> {
public String add(T t, String success, String error){
if (add(t)) {
return success;
} else {
return error;
}
}
}
または
変更別のメソッド名を使用して署名:
public class MyList<T> extends ArrayList<T> {
public String addItem(T t){
if (add(t)) {
return "success";
} else {
return "error";
}
}
}
または
基礎となる操作を行うためにArrayList
の集約を使用するラッパークラスを使用します。しかし、あなたはArrayList` `には、このような方法がないのであなたは単に、それをオーバーライドすることはできませんすべてのメソッドget, add, size, etc
public static class MyArrayList<T> {
private List<T> list;
public MyArrayList() {
this.list = new ArrayList<T>();
}
public String add(T t) {
if (list.add(t)) {
return "success";
} else {
return "error";
}
}
public T get(int index) {
return list.get(index);
}
}
を実装する必要があります。あなたは*それをオーバーロードすることができます。 'boolean add(E)'との曖昧さを解消するために、このメソッドに別のパラメータが必要です。 (あるいは別の名前をつけることもできます)。 –
あなたの全体的なアプリケーションの文脈のように聞こえますが、これはリストの 'add'メソッドの仕事ではありません。 – user2357112
"はtrueまたはfalseを示すブール値を返します。 –