2016-08-26 15 views
-1

これはうまくいくようです。これは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); 
} 

私はここで間違っていますか?

+5

姉妹コンストラクタを呼び出す構文は、単に 'this(arguments)'です。 'this.Classname(arguments)'ではなく。 – khelwood

+0

まず、変数のJava言語命名規則を学ぶ必要があります。 JavaではcamelCaseを使用して変数に名前を付けます。例えば、 'new_register_name'は' newRegisterName'でなければなりません。次に、同じクラスのコンストラクタを呼び出すには、 'this(args)'を使用してください。 – Orin

+0

ありがとうございました。 –

答えて

1

代わりにthis(new_register_name,new_register_model,new_register_default);と記述する必要があります。これは、代理コンストラクタを呼び出すための正しい構文です。

また、コンストラクタ本体にはの最初のステートメントが必要です。

関連する問題