2017-05-30 100 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。我通過在methodOne()和存儲的List值中調用它來執行add()方法。現在我需要在methodTwo()方法中使用該列表,而不執行add()方法或methodOne()。 的方法是什麼,但在關鍵詞工作RobotFrame使用列表從一種方法到另一種

是否有可能在乘坐創建List變量和列表從Method One()存儲和Method Two()使用它?

+0

這些都是本地定義list's,如果你不容使用'add',這不會工作。 'methodOne'中的'List'也是在本地定義的,所以如果你不返回一個'List '也不會將它存儲在任何與'methodOne'不同的作用域的變量中,這個'List'將很快被垃圾收集除此之外,你永遠無法引用它。 – SomeJavaGuy

+0

從習慣於Java的人的角度來看,這是一個奇怪的事情。你能解釋一下爲什麼你要用'methodtwo'中的同樣列表來處理'methodOne'中的列表嗎?如果你想讓多個函數通過變異來處理同一個對象,那麼解決方案就是使用類成員而不是局部變量。然而,你在'add'方法中做的初始化可能沒有意義。 – Aaron

回答

2

創建一流水平的列表,這樣,當方法一個執行它,它填充類級別的變量,這樣就可以在methodTwo使用它()

0

修改methodOne(),使其返回列表,而不是無效

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(); 
} 

有了上面這段代碼,不能使用strList其他地方從methodOne因爲它是一個本地列表,它的範圍是不是這種方法之外。

你有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. 
    } 

} 
相關問題