System.arraycopy--findbugs检查引发的更改

EI2: 
This code stores a reference to an externally mutable object into the internal representation of the object.  If instances are accessed by untrusted code, and unchecked changes to the mutable object would compromise security or other important properties, you will need to do something different. Storing a copy of the object is better approach in many situations.

import java.io.Serializable;

public class TableModel implements Serializable {
    private static final long serialVersionUID = 6121579860453189567L;
    private String[][] data;
    private String[] columnNames;

    public TableModel(String[][] data, String[] columnNames) {
        this.data = new String[data.length][];
        System.arraycopy(data, 0, this.data, 0, data.length);
        this.columnNames = new String[columnNames.length];
        System.arraycopy(columnNames, 0, this.columnNames, 0, columnNames.length);
    }

    public void travel() {
        System.out.println(this.data == null);
        System.out.println(this.columnNames == null);
    }

    public static void main(String[] args) {
        String[][] data = {{"A1", "B1"}, {"A2", "B2"}, {"A3", "B3"}, {"A4", "B4"},};
        String[] columnNames = {"COL1", "COL2"};
        TableModel tableModel = new TableModel(data, columnNames);
        tableModel.travel();
    }

}
原文地址:https://www.cnblogs.com/softidea/p/4949261.html