java - 为什么字节参数不被识别为整数?

标签 java constructor enums arguments byte

我有以下枚举:

public enum Months {
    JAN(31),
    FEB(28),
    MAR(31),
    APR(30),
    MAY(31),
    JUN(30),
    JUL(31),
    AUG(31),
    SEP(30),
    OCT(31),
    NOV(30),
    DEC(31);

    private final byte DAYS; //days in the month

    private Months(byte numberOfDays){
        this.DAYS = numberOfDays;
    }//end constructor

    public byte getDays(){
        return this.Days;
    }//end method getDays
}//end enum Months

尽管我传递了有效的字节参数,但它给了我一个错误,提示“构造函数 Months(int) 未定义”。 我做错了什么?

最佳答案

最简单的解决方案是接受 int

private Months(int numberOfDays){
    this.DAYS = (byte) numberOfDays;
}

顺便说一句,非静态字段应该采用 camelCase 格式,而不是 UPPER_CASE

另外,有些年份的 2 月有 29 天。

public static boolean isLeapYear(int year) {
    // assume Gregorian calendar for all time
    return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}

public int getDays(int year) {
    return days + (this == FEB && isLeapYear(year) ? 1 : 0);
} 

关于java - 为什么字节参数不被识别为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268597/

相关文章:

java - 用于匹配以变量结尾的文本的 xpath 表达式

java - ArrayList 的堆栈溢出错误

c++ - 为什么 C++ 中的这个复制构造函数不能编译?

jsp - Struts2 从 JSP 访问枚举

java - 通过 Hibernate 持久化枚举时出现 ClassCastException

java - 如何从 gradle 项目依赖项中排除 META-INF?

java - 线程池重用线程

java - Spring 带注释的 Controller bean 在应用程序上下文中重复

c++ - 为什么在 C++ 中需要复制构造函数来声明和初始化对象?

java - 如何用enum进行分类