有没有办法在 Java 中使数组真正私有?

Dyl*_*guy 2 java arrays encapsulation access-specifier

如果我做类似的事情

private int[] myPrivateArray;
Run Code Online (Sandbox Code Playgroud)

并有一个返回数组的 getter,然后可以从类外部修改数组内容,这违背了将其设为私有的目的。

Mat*_*ith 6

就在这里。

首先,如果不需要,不要为该数组提供吸气剂。如果您必须提供一个 getter,则传递一个副本,而不是私有变量。

其次(到目前为止一直被忽略),确保 JVMSecurityManager设置为停止反射


Evd*_*afa 5

您可以为数组的特定索引元素提供 setter、getter,就像 List 实现所做的那样。至于从函数返回它,您可以复制数组,然后传递副本。不是传递对数组的引用,而是传递对数组副本的引用。