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

时间:2012-10-19 09:33:34

标签: java arrays function setter

好的,这是一个非常简单的猜测问题,我对此感到茫然......但是这让我头晕目眩。 这是来源:

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 []。

就像我说过这应该是非常容易的......但是由于某种原因我不能让它工作....

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

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

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

    this.myarrayvar = myarraypass;

  3. 但请记住,如果myarraypass在课程InputValues之外修改,myarrayvar也会受到影响。

    如果您不希望发生此行为,则应按索引复制。

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

    OR

    this.myarrayvar = (int[]) myarraypass.clone();
    

    OR

    this.myarrayvar = new int[myarraypass.length];
    System.arraycopy(myarraypass, 0, this.myarrayvar, 0, myarraypass.length);
    

答案 1 :(得分:1)

  1. 如果你的myarrayvar是公开的,你为什么需要一个二传手和吸气剂。只有当您的成员无法访问外部世界时,您才需要它们,即它被标记为私有。
  2. Nest,您可以在构造函数中使用以下命令来设置数组
  3. public InputValues(int[] myarraypass) { 
    
        this.myarrayvar = new int[myarraypass.length];    
    
        System.arraycopy(myarraypass, 0, this.myarrayvar, 0, myarraypass.length );
    
    }