3

私は当惑しています、私は何か非常にばかげたことをしていると思います、私はそれを見ることができません!

セントラルヒーティングコントロール:

RadiatorクラスとRadiatorSizeクラス。Radiator には、クラス RadiatorSize の size インスタンス変数があります。ラジエーターのサイズには XSMALL、... XLARGE があります。RadiatorSize で public enum として定義されています。

そこで、新しいラジエーターを作成し、MEDIUM サイズにすることを考えています。

size = new RadiatorSize(RadiatorSize.Size.MEDIUM);

Netbeans は私にこれを教えてくれます:

...\CentralHeating\src\hardwaremodel\Radiator.java:17:
error: constructor RadiatorSize in class RadiatorSize cannot be
applied to given types;

size = new RadiatorSize(RadiatorSize.Size.MEDIUM);
required: no arguments
found: Size
reason: actual and formal argument lists differ in length
1 error

問題のあるクラスは次のとおりです。

/** Radiator class **/
package hardwaremodel;

import units_constants.RadiatorSize;

public class Radiator {
    private int boilerSequence;
    private RadiatorSize size;
    private double volume; //cubic centimetres

public void Radiator(int blrSqnc) {
    boilerSequence = blrSqnc;
    size = new RadiatorSize(RadiatorSize.Size.MEDIUM); //ERROR HERE
    }
}


/** RadiatorSize class **/
package units_constants;

public class RadiatorSize {
    public enum Size {XSMALL, SMALL, MEDIUM, LARGE, XLARGE};

    private Size size;

    public void RadiatorSize(Size sz) {
        size = sz;
    }
}

ここで、Netbeans がヒントを与えてくれます。私が同意すると、次のようになります。

public RadiatorSize(Size size) {
    throw new UnsupportedOperationException("Not yet implemented");
}

エディターに小さな赤い円がなくなりましたが、なんと...!

私は困惑しています。

4

5 に答える 5

5

これをコンストラクタとして使用しようとしています:

public void RadiatorSize(Size sz) {
        size = sz;
}

これはコンストラクターではなくvoidメソッドであるnew RadiatorSize(Size.MEDIUM);ため、パラメーターを持たない標準コンストラクターを呼び出そうとします。これを知っていれば、与えられたエラーメッセージは完全に理にかなっています;)

戻り値の型を取り除くだけで、void正常に動作するはずです。

于 2012-11-12T14:37:26.847 に答える
3

コンストラクターには、voidでさえない戻り型はありません。

public void RadiatorSize(Size sz) {
        size = sz;
    }

コンストラクタではなくメソッドです。

public  RadiatorSize(Size sz) {
        size = sz;
    }

これはコンストラクターです

于 2012-11-12T14:37:50.123 に答える
3

これ:

public void RadiatorSize(Size sz) {
    size = sz;
}

コンストラクターではなく、メソッドです。void返品タイプとして指定しました。Netbeansが生成したものを見てください。

public RadiatorSize(Size size) {
    throw new UnsupportedOperationException("Not yet implemented");
}

voidここにリターンタイプがないことに気づきましたか?

于 2012-11-12T14:38:03.097 に答える
1

RadiatorとRadiatorSizeのコンストラクターが必要です。コンストラクターのようにLOOKするメソッドは、実際には戻り型を持ち、通常のメソッドとして扱われます。リターンタイプを外します。

于 2012-11-12T14:40:11.040 に答える
1

私が見た限り、コンストラクターはまったくありません。

public void RadiatorSize(Size sz) {
        size = sz;
    }

コンストラクタではなく、通常のメソッドです。

次のように変更してみてください。

 public RadiatorSize RadiatorSize(Size sz) {
            size = sz;
        }
于 2012-11-12T14:39:27.740 に答える