Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 构造函数调用其他构造函数时出错_Java_Javafx - Fatal编程技术网

Java 构造函数调用其他构造函数时出错

Java 构造函数调用其他构造函数时出错,java,javafx,Java,Javafx,这似乎应该行得通。这是作为JavaFX应用程序的一部分进行编译的。我有几个具有不同参数的构造函数类,但实际上它们彼此非常相似 第一个是String,String,String构造函数,第二个是String,String,String,int。我只想编写String,String,String,然后对String,String,String,int变量做一个小的调整,并调用原始构造函数。我得到一个错误,上面写着: error: cannot find symbol this.DataLineReg

这似乎应该行得通。这是作为JavaFX应用程序的一部分进行编译的。我有几个具有不同参数的构造函数类,但实际上它们彼此非常相似

第一个是
String,String,String
构造函数,第二个是
String,String,String,int
。我只想编写
String,String,String
,然后对
String,String,String,int
变量做一个小的调整,并调用原始构造函数。我得到一个错误,上面写着:

error: cannot find symbol
this.DataLineRegister(new_register_name,new_register_model,new_register_default);
   symbol: method DataLineRegister(String,String,String)
1 error
这是代码。我尝试过使用和不使用
参考。另外,我尝试了self,但我想这可能只是C语言的问题

public DataLineRegister (String new_register_name, String new_register_model, String new_register_default) {
  register_name = new_register_name;
  register_model = new_register_model;

  try {
     register_default = new BigInteger(new_register_default,16);
  } catch (NumberFormatException e) {
     System.out.println("Input is not a hexadecimal number");
  }
}

public DataLineRegister (String new_register_name, String new_register_model, String new_register_default, int new_bit_width) {
    defaultRegisterBitWidth = new_bit_width;
    this.DataLineRegister(new_register_name, new_register_model, new_register_default);
}

我在这里做错了什么?

您需要编写
这个(新注册名、新注册型号、新注册默认值)取而代之。这是调用委托构造函数的正确语法


另外,请注意,它必须是构造函数体中的第一条语句。

调用姐妹构造函数的语法就是
this(arguments)
。不是
this.Classname(arguments)
。首先,您应该学习变量的Java语言命名约定。Java使用camelCase命名变量。例如,
new\u register\u name
应该是
newRegisterName
。第二,在同一个类中调用构造函数应该通过使用
this(args)
谢谢,就是这样。