3

我很困惑,我认为我在做一些非常愚蠢的事情,我只是看不到它!

中央供暖控制:

一个Radiator类和一个RadiatorSize类。散热器有一个尺寸实例变量,它属于 RadiatorSize 类。我有 XSMALL,... XLARGE 的散热器尺寸;在 RadiatorSize 中定义为公共枚举。

所以,我在想,创建一个新的散热器并给它一个中等大小。

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 给了我一个提示,它建议“在 units_constants.RadiatorSize 中创建构造函数 RadiatorSize(units_constants.RadiatorSize.Size)”;当我同意时它会这样做:

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

据我所见,您根本没有构造函数。

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

不是构造函数,它是正常的方法

尝试将其更改为:

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

您需要 Radiator 和 RadiatorSize 中的构造函数。看起来像构造函数的方法实际上有一个返回类型,并被视为常规方法。取消返回类型。

于 2012-11-12T14:40:11.040 回答