私はいくつかの過去の論文を経由して、Java試験の見直しています。この質問は、メソッドのオーバーロードの使用について完全に困惑しています。
質問は:
次のJavaインタフェースを考えてみましょう。
public interface Converter<A, B> {
B convert(A xs);
}
()入力としてのArrayList XSを取り、新しいのArrayListを返すインタフェースコンバータにおけるデフォルトのメソッドconvertAllを書きます。ArrayListのはxsがある場合は、[X1、...、XN]、メソッドの復帰[変換(×1)、...、変換(XN)]。あなたの方法では、XSがnullになることはありませんと仮定してよいです。変換するために、呼び出しの1つが例外をスローした場合は、あなたの方法は、それをキャッチしてはいけません。
(b)は実装されていることを上記インターフェース好適クラスStringConverterを書きます。次のように具体的には、クラスは、メソッドのパブリック整数変換(文字列ワード)動作することを持っていると考えられます。
単語がnull参照である場合•、IllegalArgumentExceptionがスローされます。
•それ以外の方法は、単語の長さを返します。
ここに私がやっていることです。
Converter.java
package com.sp2.bbk.q4;
import java.util.ArrayList;
public interface Converter<A, B> {
B convert(A xs);
default ArrayList<B> convertAll(ArrayList<A> xs) {
ArrayList<B> newArrayList = new ArrayList<>();
for (A a : xs) {
newArrayList.add(convert(a));
}
return newArrayList;
}
}
StringConverter.java
package com.sp2.bbk.q4;
import java.util.ArrayList;
public class StringConverter<A, B> implements Converter<A, B> {
private ArrayList<A> stringList;
public StringConverter() {
this.stringList = new ArrayList<>();
}
public ArrayList<A> getStringList() {
return stringList;
}
public Integer convert(String word) {
if (word == null)
throw new IllegalArgumentException();
return word.length();
}
@Override
public B convert(A xs) {
// what happens here??
}
}
Main.java
package com.sp2.bbk;
import com.sp2.bbk.q4.StringConverter;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// Question 4
StringConverter<String, Integer> stringConverter = new StringConverter<>();
stringConverter.getStringList().add("This");
stringConverter.getStringList().add("is");
stringConverter.getStringList().add("a");
stringConverter.getStringList().add("sentence");
ArrayList<Integer> convertedList = stringConverter.convertAll(stringConverter.getStringList());
System.out.println(convertedList);
}
}
これは、各単語が変換()メソッドを呼び出すと、リストに結果を格納することであるどのくらい表す整数に単純明快なことに、すべての単語のconvertAll()メソッドの変換です。
私が出て働くことができないことはStringConverter.java内の他の変換()メソッドを呼び出すために実装変換()メソッドを使用して、実際に変換を行う方法です。私はどちらか、無限再帰ループを開始したり、あいまいなメソッド呼び出し警告が表示されます。これは宿題、単なるリビジョンではありません。私はこのことを理解してもらう任意の助けいただければ幸いです。
何をする必要があると、このようなインターフェイスを実装しています。
public class StringConverter implements Converter<String, Integer> {
//...
}
次に、あなたの方法は次のように上書きすることができます。
@Override
public Integer convert(String word) {
if (word == null)
throw new IllegalArgumentException();
return word.length();
}