java - 将 Enum 成员传递给构造函数 : "actual and formal argument lists differ in length"

标签 java constructor enums

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

中央供暖控制:

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

所以,我在想,创建一个新的 Radiator 并将其设置为中等大小。

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");
}

现在编辑器里已经没有小红圈了,但是……!

我很困惑。

最佳答案

您正在尝试将其用作构造函数:

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

因为这不是构造函数,而是 void 方法,所以您的 new RadiatorSize(Size.MEDIUM); 会尝试调用没有参数的标准构造函数。知道了这一点,给出的错误消息就完全有意义了;)

只需去掉 void 返回类型,它应该可以正常工作。

关于java - 将 Enum 成员传递给构造函数 : "actual and formal argument lists differ in length",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13345580/

相关文章:

java - 为什么我不能在类的构造函数中调用静态方法?

c++ - 从文件读取时如何使用枚举

c# - 无法隐式转换类型 'List<System.Web.Mvc.SelectListItem> to ' IEnumerable<Microsoft.AspNetCore.Mvc.Rendering.SelectListItem>'

java - Archive TransferManagerBuilder 无法通过区域提供商链找到区域

java - 删除 jdo 后是否重用 IdGeneratorStrategy.Identity 值

c# - 如何在C#类的构造函数中生成一个随机数

sql - SQL中ENUM列的大小?

java - Spring 安全: Access is Denied Exception

java - 字符串中字节的十六进制表示

c++ - 既然你可以在 C++ 中以两种方式声明一个复制构造函数,那哪种方式是正确的?