如何使数组的元素不可变?

问题描述:

我有一个最终的字符串数组,并将其传递给一个方法。该方法能够改变元素的值,如下所示。如何保护最终字符串数组的元素不被修改?如何使数组的元素不可变?

class Test { 

    public static void main(String[] arguments) { 
     final String[] finalNames = new String[] { "Name1", "Name2", "Name3" }; 
     iterateNames(finalNames); 
    } 

    private static void iterateNames(final String[] finalNames) { 

     //The below assignment should be prevented 

     finalNames[0] = "ChangedName1"; 

     for (String name : finalNames) { 
      System.out.println(name); 
     } 
    } 

} 
+4

使用防御性副本,不要发送原始数组。发送该数组的副本 – TheLostMind

结账this回答。 TL:DR:您需要使用其他数据结构来获取不可变数组。