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