当我将一个不可变类型对象(String,Integer,..)作为final传递给方法时,我可以实现C++常量指针的字符.但是,如何在可变的对象中强制执行此类行为?
public void someMethod(someType someObject){ /* * code that modifies the someObject's state * */ }
我想要的是防止someMethod修改someObject的状态而不在someType中进行任何更改.这可能吗?
在一般情况下,不,这是不可能的.在非常有限的情况下,您可以将someType包装在提供相同接口的类中(有关示例,请参阅Collections.unmodifiableList()).
但是,没有相当于"传递一个const指针,编译器只允许你调用const函数".