别过经年 2013-10-28 11:24 采纳率: 0%
浏览 808

MON(){}是枚举的对象,怎么可以在里卖弄写方法呢?

package cn.itcast.enumeration2;

import org.junit.Test;

public class Demo2 {
@Test
public void test1(){

    System.out.println(Weekday.MON);
}

}
enum Weekday{
//MON,TUS,WED,THU,FRI,STA,SUN;
MON(){
public String week(){
return "星期一";
}
}
,TUS(){
public String week(){
return "星期二";
}
}
,WED(){
public String week(){
return "星期三";
}
}
,THU(){
public String week(){
return "星期四";
}
}
,FRI(){
public String week(){
return "星期五";
}
}
,STA(){
public String week(){
return "星期六";
}
}
,SUN(){
public String week(){
return "星期日";
}
};
public abstract String week();
}

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-10-06 19:29
    关注

    所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。

    该回答引用ChatGPT-3.5,仅为您提供参考,不保证完全正确
    在枚举中,每个枚举常量都可以有自己的方法。你已经在你的示例中定义了一个抽象方法 week(),并在每个枚举常量中实现了它。这是完全有效的,但你需要注意一些细节:

    1. 抽象方法:在 Weekday 枚举中,你定义了一个抽象方法 week(),并要求每个枚举常量都实现它。这是有效的,但你需要确保每个枚举常量都提供了方法的具体实现,否则会导致编译错误。

    2. 方法调用:要调用枚举常量中的方法,你只需像调用普通方法一样使用点号(.)运算符。例如,你可以使用 Weekday.MON.week() 来调用 MON 枚举常量中的 week() 方法。

    在你的示例中,你已经按照上述方式正确定义了枚举常量和方法,所以你可以像你的 test1 方法中那样调用 Weekday.MON.week() 来获取 "星期一"。

    示例代码:

    @Test
    public void test1() {
        System.out.println(Weekday.MON.week()); // 输出:星期一
    }
    

    这样,你就可以在枚举中使用方法了。希望这对你有所帮助!


    该回答引用NewBing,仅为您提供参考,不保证完全正确
    枚举类型是一种特殊的类,用于表示一组有限的常量值,比如一周的七天,四季,方向等。枚举类型可以使用 enum 关键字来定义,后面跟着枚举类型的名称,以及用大括号 {} 括起来的一组枚举常量。每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从 0 开始递增。¹²


    枚举类型可以有自己的变量、方法和构造函数,就像普通类一样。构造函数只能使用 private 访问修饰符,所以外部无法调用。枚举类型也可以包含抽象方法,如果枚举类型具有抽象方法,则枚举类的每个实例都必须实现它。¹


    你给出的代码示例中,Weekday 是一个枚举类型,它有一个抽象方法 week(),用于返回每个枚举常量对应的星期字符串。每个枚举常量都是 Weekday 类型的对象,它们分别重写了 week() 方法,实现了不同的逻辑。这样,在调用 Weekday.MON.week() 时,就会返回 "星期一"。这是一种使用多态性来实现不同行为的方式。


    如果你想了解更多关于枚举类型的知识,你可以参考以下链接:


    源: 与必应的对话, 2023/10/6
    (1) Java 枚举(enum) | 菜鸟教程. https://www.runoob.com/java/java-enum.html.
    (2) C enum(枚举) | 菜鸟教程. https://www.runoob.com/cprogramming/c-enum.html.
    (3) Java 枚举(enum) | 菜鸟教程. https://www.runoob.com/java/java-enum.html.
    (4) C enum(枚举) | 菜鸟教程. https://www.runoob.com/cprogramming/c-enum.html.
    (5) 枚举类 - 廖雪峰的官方网站. https://www.liaoxuefeng.com/wiki/1252599548343744/1260473188087424.


    该回答引用文心一言,仅为您提供参考,不保证完全正确
    你的代码里已经正确地展示了如何在枚举中定义方法。枚举常量MON,TUS,WED等都是Weekday枚举的实例,它们各自重写了week方法,返回对应的中文星期名。


    如果你想要调用这些方法,你可以这样做:

    package cn.itcast.enumeration2;
    
    import org.junit.Test;
    
    public class Demo2 {
        @Test
        public void test1() {
            System.out.println(Weekday.MON.week());
        }
    }
    enum Weekday {
        MON() {
            public String week() {
                return "星期一";
            }
        }
        , TUS() {
            public String week() {
                return "星期二";
            }
        }
        , WED() {
            public String week() {
                return "星期三";
            }
        }
        , THU() {
            public String week() {
                return "星期四";
            }
        }
        , FRI() {
            public String week() {
                return "星期五";
            }
        }
        , STA() {
            public String week() {
                return "星期六";
            }
        }
        , SUN() {
            public String week() {
                return "星期日";
            }
        };
        public abstract String week();
    }
    

    在这个代码中,Weekday.MON.week()将返回"星期一"。


    该回答引用讯飞星火,仅为您提供参考,不保证完全正确
    在枚举类中,不能直接定义方法。枚举类的实例是固定的,所以不能为每个枚举值定义不同的方法。但是可以在枚举类中定义一个抽象方法,子类可以实现这个方法。这里的问题可以通过创建一个枚举类的子类来解决,然后在子类中实现week()方法。


    解析后的代码如下:

    package cn.itcast.enumeration2;
    
    import org.junit.Test;
    
    public class Demo2 {
        @Test
        public void test1() {
            System.out.println(Weekday.MON);
        }
    }
    
    enum Weekday {
        MON, TUS, WED, THU, FRI, STA, SUN;
    
        public abstract String week();
    }
    
    class Monday extends Weekday {
        public String week() {
            return "星期一";
        }
    }
    
    class Tuesday extends Weekday {
        public String week() {
            return "星期二";
        }
    }
    
    // ... 其他枚举值的子类
    
    class Demo2Test {
        @Test
        public void test1() {
            System.out.println(Monday.week());
        }
    }
    

    该回答引用通义千问,仅为您提供参考,不保证完全正确
    在枚举中定义方法需要使用内部类的方式,例如在你的代码中,你可以这样做:

    public enum Weekday {
        MON() {
            public String week() {
                return "星期一";
            }
        },
        TUS() {
            public String week() {
                return "星期二";
            }
        },
        WED() {
            public String week() {
                return "星期三";
            }
        },
        THU() {
            public String week() {
                return "星期四";
            }
        },
        FRI() {
            public String week() {
                return "星期五";
            }
        },
        STA() {
            public String week() {
                return "星期六";
            }
        },
        SUN() {
            public String week() {
                return "星期日";
            }
        };
    
        public abstract String week();
    }
    

    然后你就可以在测试方法中调用这个方法了:

    @Test
    public void test1() {
        System.out.println(Weekday.MON.week());
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 如何实验stm32主通道和互补通道独立输出
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题