如何创建现有类的新实例?

时间:2013-11-27 11:43:51

标签: java class instance

我正在使用Java编写项目,并使用以下代码创建了一个类:

public class VehInfo {
    private int[][] traffic = new int[20][150]; 
    private int mintime = 0;
    private int numvehicles = 1;
    private int[] vehiclecode = new int[5];

    public VehInfo(int[][] traffic, int mintime, int numvehicles, int[] vehiclecode) {
        this.traffic = traffic;
        this.mintime = mintime;
        this.numvehicles = numvehicles;
        this.vehiclecode = vehiclecode; 
    }
}

我想使用以下代码

创建此类的新实例
VehInfo vehinfo = new VehInfo(new int[20][150], new int, new int, new int[5]);

然而,Netbeans告诉我:

  

必需:(int [] [],int,int,int [])

     

发现:(int [] [],int [],int [],int [])

我错过了什么?我显然没有将这些变量初始化为int [],那么它们为什么会被这样变换呢?

7 个答案:

答案 0 :(得分:5)

您无法启动简单数据类型,例如intbooleancharfloatdouble等。 将其更改为:

VehInfo vehinfo = new VehInfo(new int[20][150], 0, 0, new int[5]);

或删除传递的属性。在我看来,你设置了默认值:

private int mintime = 0;
private int numvehicles = 1;

答案 1 :(得分:1)

 VehInfo vehinfo = new VehInfo(new int[20][150], 0,0 new int[5]);

编辑:太晚了:(

答案 2 :(得分:1)

您正在努力解决语法错误

试试这个VehInfo vehinfo = new VehInfo(new int[20][150], 1, 2, new int[5]);

答案 3 :(得分:1)

这样做:

VehInfo vehinfo1 = new VehInfo(new int[20][150], new Integer(1), new Integer(1), new int[5]);

或者这个:

VehInfo vehinfo2 = new VehInfo(new int[20][150], 1, 1, new int[5]);

因为int(或Integer)是原语,所以如果没有值,它们就无法实例化。

答案 4 :(得分:0)

你的构造函数

public VehInfo(int[][] traffic, int mintime, int numvehicles, int[] vehiclecode)

需要这样的情况。假设您已声明变量:

int[][] traffic = new int[20][150];
int mintime = 0;
int numvehicles = 0;
int[] vehiclecode = new int[5];

然后您可以为它们分配值:

/** here in your program you assign some values */
mintime = 30;
numvehicles = 2;
vehiclecode[0] = 44;
vehiclecode[1] = 77;

稍后创建VehInfo类的对象

/** then in you program you can create vehinfo objects */
VehInfo vehinfo = new VehInfo(traffic, mintime, numvehicles, vehiclecode);

答案 5 :(得分:0)

尝试使用数字而不是像这样的“new int”初始化您的类。

VehInfo vehinfo = new VehInfo(new int[20][150], 0, 0, new int[5]);

答案 6 :(得分:0)

尝试: 你需要给出参数的实际值来使用你创建的VehInfo构造函数初始化VehInfo类型的对象:

int[][] myint1 = new int[5][5]; //Allocating memory for 5x5 array
myint1 = {{ 1,  2,  3,  4,  5},
          { 6,  7,  8,  9, 10},
          {11, 12, 13, 14, 15},
          {16, 17, 18, 19, 20},
          {21, 22, 23, 24, 25}};

VehInfo myVehInfo = new VehInfo(myint1, 5, 5, int[5]);