首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Enum成员传递给构造函数:“实际和正式的参数列表长度不同”

将Enum成员传递给构造函数:“实际和正式的参数列表长度不同”
EN

Stack Overflow用户
提问于 2012-11-12 14:34:19
回答 5查看 2.9K关注 0票数 3

我很困惑,我想我在做一些很愚蠢的事情,我只是看不见!

集中供热控制:

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

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

代码语言:javascript
复制
size = new RadiatorSize(RadiatorSize.Size.MEDIUM);

Netbeans告诉我:

代码语言:javascript
复制
...\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

这是冒犯性的课程。

代码语言:javascript
复制
/** 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中创建构造器units_constants.RadiatorSize";如果我同意,它就会这样做:

代码语言:javascript
复制
public RadiatorSize(Size size) {
    throw new UnsupportedOperationException("Not yet implemented");
}

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

我很困惑。

EN

回答 5

Stack Overflow用户

发布于 2012-11-12 14:37:26

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

代码语言:javascript
复制
public void RadiatorSize(Size sz) {
        size = sz;
}

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

只要去掉void返回类型,它就会正常工作。

票数 5
EN

Stack Overflow用户

发布于 2012-11-12 14:37:50

构造函数没有返回类型,甚至没有空类型。

代码语言:javascript
复制
public void RadiatorSize(Size sz) {
        size = sz;
    }

是一个方法,而不是构造函数。

代码语言:javascript
复制
public  RadiatorSize(Size sz) {
        size = sz;
    }

现在这是一个构造函数

票数 3
EN

Stack Overflow用户

发布于 2012-11-12 14:38:03

这是:

代码语言:javascript
复制
public void RadiatorSize(Size sz) {
    size = sz;
}

不是构造函数,而是一种方法。您将void指定为返回类型。只需看看Netbeans生成了什么:

代码语言:javascript
复制
public RadiatorSize(Size size) {
    throw new UnsupportedOperationException("Not yet implemented");
}

注意到这里缺少void返回类型吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13345580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档