ヤンHorčička:
ArrayList1とArrayList2 - 私は2つのArrayListを持っています。オブジェクト1とObject2に、それぞれ - それらのそれぞれは、対象物が充填されています。これらのオブジェクトはどちらも方法「のgetText」を持っています。
オブジェクト1:
public String getText() { return "1";}
Object2に:
public String getText() { return "2";}
ある時点で私は(わずかに異なるパラメータを持つ)と同じ方法を用いて、これらのリストのそれぞれをループしたいです。
loopThroughList(1)
loopThroughList(2)
私は、メソッドを呼び出したいが、私はしようとしているオブジェクトがわからない場合は、構文は何ですか?これは私がこれまで持っているコードです。
for (Object o : lists.getList(listNumber)) {
System.out.println(o.getText());
}
それは言うことはできません解決方法のgetTextを。私の周りGoogleで検索し、別の解決策を見つけました:
for (Object o : lists.getList(listNumber)) {
System.out.println(o.getClass().getMethod("getText"));
}
しかし、これは私に与えないNoSuchMethodExceptionのエラーを。「のgetText」メソッドはパブリックですが。
EDIT:リターンArrayList1またはArrayList2のいずれか(提供パラメータに依存する)という正しいリストを取得するには、私は方法別のオブジェクト(リスト)の「GETLIST」呼び出しています。
class Lists
public getList(list) {
if (list == 1) {
return ArrayList1;
}
else if (list == 2) {
return ArrayList2;
}
}
user10367961:
以下のためのインタフェースを定義getText
する方法を
public interface YourInterface {
String getText();
}
それぞれのクラスのインターフェイスを実装
public class Object1 implements YourInterface {
@Override
public String getText() {
return "1";
}
}
public class Object2 implements YourInterface {
@Override
public String getText() {
return "2";
}
}
あなたの変更getList
返すようにする方法をList<YourInterface>
public static List<YourInterface> getList(int list){
List<YourInterface> result = new ArrayList<>();
if(list == 1){
// your initial type
List<Object1> firstList = new ArrayList<>();
result.addAll(firstList);
} else {
// your initial type
List<Object2> secondList = new ArrayList<>();
result.addAll(secondList);
}
return result;
}
以下のための宣言 loopThroughList
public static void loopThroughList(List<YourInterface> list){
list.forEach(yourInterface -> System.out.println(yourInterface.getText()));
}
サンプルの使用。
public static void main(String[] args) {
loopThroughList(getList(1));
loopThroughList(getList(2));
}