Tag: 成员

具有ArrayList成员变量的不可变对象 – 为什么可以更改此变量?

我有一个包含各种成员变量的类。 有一个构造函数,有getter方法,但没有setter方法。 实际上,这个对象应该是不可变的。 public class Example { private ArrayList list; } 现在我注意到以下内容:当我使用getter-method获取变量列表时,我可以添加新值等等 – 我可以更改ArrayList 。 当我为下一次调用此变量的get() ,返回更改的ArrayList 。 怎么会这样? 我没有再设置它,我只是努力了! 使用String这种行为是不可能的。 那么这里的区别是什么?

我可以使用一些语法访问匿名内部类中的新方法吗?

是否有任何Java语法来访问外部类中匿名内部类中定义的新方法? 我知道可以有各种变通方法,但我想知道是否存在特殊语法? 例如 class Outer { ActionListener listener = new ActionListener() { @Override void actionPerformed(ActionEvent e) { // do something } // method is public so can be accessible public void MyGloriousMethod() { // viva! } }; public void Caller() { listener.MyGloriousMethod(); // does not work! } } 我自己的解决方案 我刚把所有的方法和成员都移到了外层。