Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:需要为传递的引用列出侦听器吗?_Java - Fatal编程技术网

Java:需要为传递的引用列出侦听器吗?

Java:需要为传递的引用列出侦听器吗?,java,Java,我想传递一个动态列表的引用。在Class2中,getTheList方法应该保持获取新列表,即使原始列表发生更改。我应该添加一个侦听器,还是必须以更好的方式更改我的设计 class1{ public class1(){ List orginalList=getOrginalList(); Class2 c2=new Class2(orginalList); } public List getOrginalList(){ /

我想传递一个动态列表的引用。在Class2中,getTheList方法应该保持获取新列表,即使原始列表发生更改。我应该添加一个侦听器,还是必须以更好的方式更改我的设计

class1{
    public class1(){
       List orginalList=getOrginalList();
       Class2 c2=new Class2(orginalList);
    }

    public List getOrginalList(){ 
          //here read and return the updated orginal
         //List from a web service
    }           
}

class2{
    List myList;
    public class2(List realList){
        myList=realList;
    }
    private int getTheList(){
        //when I call this method I want to get the updated list
        return  myList.size();
    }    
}
从你的评论中

//something here later changes the orginal list but In class2 
//I still keep getting the old list!

。。。看起来您希望有两个列表对象。没有。只有一个列表,你有两个参考。如果要复制列表,则需要显式地执行此操作。赋值运算符从不创建对象的副本。它只是将一个表达式的值复制到一个变量。该表达式的值始终是引用或原语值,而不是对象。

这似乎实现了您想要的功能,假设您想要的是传递引用而不是复制列表。你能再发一些代码吗?你的问题很不清楚。我已经尽我所能回答了这个问题,但请阅读以获得关于如何改进它的建议。请创建一个简短的例子,因为您的例子有缺陷(即试图在没有类引用的情况下调用私有实例方法,并且方法修饰符是私有的?!应该是公共的)而且问题还不清楚。@Keppil我更新了问题,仍在等待答案。我的解释是OP想要通过参考,但不知何故设法得到了一份副本。我从来没有机会,我的问题得到了Jon Skeet的回答。具有多种编程语言知识的天才。@Jon Skeet谢谢,我更新了问题。我不想要我的书的副本list@Keppil是的,我想通过推荐