未知のオブジェクトの呼び出し方法

ヤン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));
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222432&siteId=1