これはうまくいくようです。これはJavaFXアプリケーションの一部としてコンパイルされています。私は、異なる引数を持つ複数のコンストラクタクラスを持っていますが、効果的には互いに非常に似ています。他のコンストラクタを呼び出すコンストラクタでエラーが発生する
最初はString, String, String
コンストラクタで、2番目は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
ここにコードがあります。私はthis
の参照の有無にかかわらず試しました。また、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)'ではなく。 – khelwood
まず、変数のJava言語命名規則を学ぶ必要があります。 JavaではcamelCaseを使用して変数に名前を付けます。例えば、 'new_register_name'は' newRegisterName'でなければなりません。次に、同じクラスのコンストラクタを呼び出すには、 'this(args)'を使用してください。 – Orin
ありがとうございました。 –