Java 设置传递给函数的数组变量

Java 设置传递给函数的数组变量,java,arrays,function,setter,Java,Arrays,Function,Setter,好的,这是一个猜测,一个非常简单的问题,我有一个关于。。。。然而,它正在杀死我的头。 资料来源如下: import java.util.Arrays; public class InputValues { public int[] myarrayvar; public InputValues(int[] myarraypass) { ---- help here } public void init() { ---he

好的,这是一个猜测,一个非常简单的问题,我有一个关于。。。。然而,它正在杀死我的头。 资料来源如下:

import java.util.Arrays;
public class InputValues {  
    public int[] myarrayvar;
    public InputValues(int[] myarraypass) {     
    ---- help here
    }
    public void init() {        
    ---help here
    }
    public int[] getmyarrayvar() {
        return myarrayvar;
    }
    public void setmyarrayvar(int[] myarraypass) {
        this.myarrayvar= mayarraypass;
    }
}
我把这个叫做

InputValues inputValues = new InputValues(myarraypass);
inputValues.init();
myarraypass的类型为int[]


就像我说的,这应该很容易。。。。但由于某种原因,我无法让它工作……

您可以尝试以下方法:

  • 将实例变量访问权限从
    public
    更改为
    private

  • 在构造函数中,您可以使用以下行:

    this.myarrayvar=myarraypass

  • 但是请记住,如果在类
    InputValues
    之外修改了
    myarraypass
    myarrayvar
    也会受到影响

    如果您不希望发生这种行为,那么应该逐个索引复制索引

    this.myarrayvar = new int[myarraypass.length];
    for(int i=0; i<myarraypass.length;i++)
        this.myarrayvar[i] = myarraypass[i];
    

  • 如果你的myarrayvar是公开的,那么为什么你需要一个二传手和传手呢。只有当外部世界无法访问您的成员时,您才需要它们,即该成员被标记为私有
  • 嵌套时,可以在构造函数中使用以下内容来设置数组:

  • 我做了1。并在setter中插入一个print cmd。。。但这绝不是印刷。。所以我猜它从来没有被调用过,我以后使用数组进行计算,结果返回一个NullPointerException。由于某些原因,未设置var。使其正常工作。。我把震源放在了brakets之外。。。现在我做对了,效果很好…-)感谢你在什么意义上不能让它工作?你遇到了什么问题?
    this.myarrayvar = (int[]) myarraypass.clone();
    
    this.myarrayvar = new int[myarraypass.length];
    System.arraycopy(myarraypass, 0, this.myarrayvar, 0, myarraypass.length);
    
    public InputValues(int[] myarraypass) { 
    
        this.myarrayvar = new int[myarraypass.length];    
    
        System.arraycopy(myarraypass, 0, this.myarrayvar, 0, myarraypass.length );
    
    }