这是我的field.java
课程。我已经在这里定义了public Field(String name, int number)
。
public class Field
{
String name;
int number;
public Field(String name, int number){
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public int getNumber() {
return number;
}
@Override
public String toString() {
return "Field{" + "name=" + name + ", number=" + number + '}';
}
}
以下是我的Player.java
课程,我在Field currentField = new Field();
上收到错误 - 它说我的字段未在Field.java
类中定义为构造函数
public class Player
{
private String name;
private int pos;
Field currentField = new Field();
public Player()
{
}
}
任何人都有关于为什么我会抛出错误的建议?
答案 0 :(得分:4)
您在班级
中提供了参数化构造函数public Field(String name, int number){
this.name = name;
this.number = number;
}
因此,在定义参数化构造函数时,不会提供默认(无参数)构造函数。
因此,当您尝试使用Field currentField = new Field();
创建实例时,由于没有匹配的构造函数,因此无法编译。
您可以尝试的解决方案:
<强> 1。 在您的班级中添加一个无参数构造函数:
public Field()
{
}
或
<强> 2。 在创建实例时,将值传递给constrcutor:
Field currentField = new Field("abc", 123);
答案 1 :(得分:2)
是的,因为您的类接收两个参数名称和编号,并且您尝试创建它的实例而不传递它们。
你可以传递它们
Field currentField = new Field("test", 1); // for ex :
或为Field类创建一个默认的无参数构造函数。
/** default no arg constructor **/
public Field(){
// TODO : when there is no param
}
答案 2 :(得分:0)
Field currentField = new Field();
您没有将任何参数传递给构造函数。您需要提供名称和编号作为参数,或者定义默认构造函数:
public Field(String name, int number){
this.name = name;
this.number = number;
}
Field currentField = new Field("fieldName", 1);
或
public Field(){
this.name = "";
this.number = 0;
}
Field currentField = new Field();
答案 3 :(得分:0)
在每个Java类中都有一个默认构造函数,如果添加任何其他构造函数,它将覆盖默认构造函数。因此,要使代码工作,您必须不添加参数构造函数。
public Field(){
}