2017-05-30 111 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. 
    } 

} 
相关问题