我对构造函数和参数有一个特定的问题。
我使用byte []数组作为对象构造函数的参数。我的对象类编译得很好,但测试类有一个我无法弄清楚的错误。 我在测试类中使用了正确的参数,但是编译器说构造函数中没有任何参数。可以理解的是,我没有看到这个漏洞,但我对这个漏洞非常沮丧。
提前谢谢!
编译器错误:
CubeTest.java:6: error: constructor Cube in class Cube cannot be applied to given types;
Cube test = new Cube();
^
required: byte[],byte[],byte[],byte[],byte[],byte[]
found: no arguments
reason: actual and formal argument lists differ in length
1 error
Cube类:
class Cube{
//declare arrays
private byte[] f;
private byte[] r;
private byte[] u;
private byte[] b;
private byte[] l;
private byte[] d;
//
//
//
//constructor
public Cube(byte[] f, byte[] r, byte[] u, byte[] b, byte[] l, byte[] d){
this.f = new byte[9];
this.r = new byte[9];
this.u = new byte[9];
this.b = new byte[9];
this.l = new byte[9];
this.d = new byte[9];
//fill this.f
for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
this.f[i] = f[n];
}
//fill this.r
for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
this.r[i] = r[n];
}
//fill this.u
for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
this.u[i] = u[n];
}
//fill this.b
for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
this.b[i] = b[n];
}
//fill this.l
for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
this.l[i] = l[n];
}
//fill this.d
for(int i = 0, n = 0; i < 9 && n < 9; i++, n++){
this.d[i] = d[n];
}
}
}
测试类:
class CubeTest{
public static void main(String args[]){
//f, r, u, b, l, d
//1, 2, 3, 4, 5, 6
//create such arrays
byte[] f = new byte[9];
byte[] r = new byte[9];
byte[] u = new byte[9];
byte[] b = new byte[9];
byte[] l = new byte[9];
byte[] d = new byte[9];
//fill arrays
for(int i = 0; i < 9; i++){
f[i] = 1;
r[i] = 2;
u[i] = 3;
b[i] = 4;
l[i] = 5;
d[i] = 6;
}
//create Cube named test
Cube test = new Cube(f, r, u, b, l, d);
//
}
}
答案 0 :(得分:0)
您必须在类Cube中提供默认构造函数。 声明自定义构造函数时,Java编译器不会创建默认构造函数。