2017-05-30 17 views
1
private List<String> add() { 
    List<String> strlist = new ArrayList<String>(); 
    return strList; 
} 

public void methodOne() { 
    List<String> strList = this.add(); 
} 

public void methodtwo() { 
    // need to use the list in methodOne. 
} 

私はListを返す1つのプライベートメソッドを持っています。私はadd()メソッドをmethodOne()とそれに格納されたList値で呼び出すことによってそのメソッドを実行しました。今度はadd()メソッドまたはmethodOne()を実行せずにmethodTwo()メソッドでそのリストを使用する必要があります。 方法はRobotFrame作業中のキーワードは何もある方法から別の方法へのリストの使用

ません、それはライドにList変数を作成し、Method One()からリストを保存し、Method Two()でそれを使用することは可能ですか?

+0

あなたは 'add'、この文句を言わない作業を使用can't場合、これらは、すべてローカルに定義されたlist'sているを持っています。 'methodOne'の' List'もローカルで定義されていますので、 'List 'を返さない場合や、 'methodOne'とは異なるスコープの変数に格納していない場合、このリストはガベージコレクションされます。あなたはそれを決して参照することはできません。 – SomeJavaGuy

+0

これは、Javaに慣れていた人の観点から尋ねると奇妙なことです。なぜあなたは 'methodOne'のように' methodtwo'で同じリストを使いたいのか説明できますか?解決策は、複数の関数が同じオブジェクトに対して変更を加えて機能するようにするには、ローカル変数の代わりにクラスメンバを使用することです。しかし、 'add'メソッドで行う初期化はおそらく意味をなさないでしょう。 – Aaron

答えて

2

するのではなく、そのリストを返すようにmethodOne()を変更上記のコード切れ端で

0

)(それは方法は1がそれを実行すると、それはクラスレベルの変数を移入するようにあなたがmethodTwoでそれを使用することができるように、クラスレベルのリストを作成し、ボイド

public List<String> methodOne() { 
    List<String> strList = this.add(); 
    .... something else.... 
    return strList; 
} 

public void methodtwo() { 
    methodOne(); // here you get a ref to strList... 
} 
0
public void methodOne(){ 
    List<String> strList=this.add(); 
} 

それはその適用範囲このメソッドの外ではありませんローカルリストだから、あなたはmethodOneからどこか他のstrListを使用することはできません。

あなたは左の2つのオプション、

Option1: 
public List<String> methodOne(){ 
    List<String> strList=this.add(); 
    // do SomeOperation on strList because that's why methodOne is there else you can directly call add method from methodTwo() 
    return strList; 
} 

public void methodtwo(){ 
    List<String> myLocalList = methodOne(); // Now you have the list :) 
} 


Option2: Use Instance level list but it's not a good practice 
1
public class YourClass{ 

    private List<String> yourList; 

    private List<String> add(){ 
     List<String> strlist=new ArrayList<String>(); 
     return strList; 
    } 

    public void methodOne(){ 
     yourList=this.add(); 
    } 

    public void methodtwo(){ 
     // here go with yourList variable. 
    } 

} 
関連する問題