枚举的操作续

在枚举值声明完毕之后应该有一个分号:

public enum MyColor {

    RED ,

    private MyColor () {

    }

}


打下横线的地方表示有错误产生。

修改方式:将逗号该为分号。

public enum MyColor {

    RED ;

    private MyColor() {

    }

}

但是如果一个枚举类当中只有枚举值那么就可以不使用分号,也可以不使用逗号。

public enum MyColor {

    RED

}

 

举值之所以能声明,是因为该枚举类当中有相对应的构造方法:

上一个例子之所以能声明是因为在一个类当中,如果我们没有手动的写一个构造方法,编译器会自动给我们添加一个无参数的构造方法,所以它没有出现错误。也就是说 RED 与一个无参数的构造函数相对应。

我们怎么样来验证这一点呢?

public enum MyColor {

    RED ( "red" );  

}

看见了么?现在 RED 的下横线。说明出现了错误。说明它找不到一个参数为 String 类型的构造方法。所以报告了一个编译时错误。

修改如下:

public enum MyColor {

    RED ( "red" );

    private MyColor(String s) {}

}

好了,现在就没有错误报告了。编译通过。

枚举跟类一样,当你手动为它添加了一个含参构造方法,那么编译器不会在自作聪明为你添加一个无参构造方法。编译器可能是这样想的,既然你重新写了一个有参的构造方法,那么说明我的这个无参的构造方法就没有用了。

何以为证?

public enum MyColor {

    RED ( "red" ),       // 表示找到与之匹配的无参构造函数,

    BLUE (),           // 如果是无参,后面的括号为可选

    YELLOW ( "yellow" ),    // 表示找到一个有参构造方法

    GREEN ;            // 虽然分号可有可无,但是这个只是针对这个类中没有显示的写出构造方法之前可以使用。

                     // 分号表示声明完毕

 

//  private MyColor() {

//

//  }

    private MyColor(String yellow) {}

}

当我把那个无参构造方法的注释去掉,那么之前错误的下横线就会消失。ok pass。

 

在一个枚举类当中,枚举值之前除了有注释语句之外,不能有其它的任何代码。否则会报告一大堆乱七八糟的错误,其实它就是以为你在声明枚举值。 还有就是如果你创建了一个枚举类,然而在这个枚举类中你还没有声明枚举类就去写了非注释性的代码,那么也将出现错误。错误的原因实际上是它认为你在创建枚举值,首先报告int有错,因为它是一个关键字,你可以去掉,然后它报告private修饰符有错,不能修饰枚举值,因为枚举值在枚举当中被要求是public static final的,应该去掉private,坦白的说它就是以为你在声明一个名为age的枚举值。

enum Simpsons {
    private int age;
}

那么解决它的办法当然有:

1、

enum Simpsons {

    // 声明枚举值

    s;
    private int age;
}

2、

enum Simpsons {

    // 写一个分号,表示枚举值声明完毕,得到一个缺省的枚举值。

    ;
    private int age;
}

public enum MyColor {

    int a = 0;

 

    RED ( "red" ),       // 表示找到与之匹配的无参构造函数,

    BLUE (),           // 如果是无参,后面的括号为可选

    YELLOW ( "yellow" ),    // 表示找到一个有参构造方法

    GREEN ;             // 虽然分号可有可无,但是这个只是针对这个类中没有显示的写出构造方法之前可以使用。

                     // 分号表示声明完毕

 

    private MyColor() {}

 

    private MyColor(String yellow) {}

}

 

看见了吗?出现了很多下横线。

解决方案就是将 int a = 0; 代码删除。

 

完整代码:

MyColor.java

package enumDemo;

 

public enum MyColor {

 

    RED ( "red" ), // 表示找到与之匹配的无参构造函数,

    BLUE (), // 如果是无参,后面的括号为可选

    YELLOW ( "yellow" ), // 表示找到一个有参构造方法

    GREEN ; // 虽然分号可有可无,但是这个只是针对这个类中没有显示的写出构造方法及其它代码之前可以使用。

    // 分号表示枚举值声明完毕

 

    private MyColor() {}

 

    private MyColor(String yellow) {}

 

    /** 返回此枚举常量的名称,在其枚举声明中对其进行声明。 */

    public String getName() {

       return this .name();

    }

 

    /** 返回枚举常量的声明时序数 */

    public int getOrdinal() {

       return this .ordinal();

    }

 

    /** 比较此枚举与指定对象的顺序 */

    public int getCompareTo(MyColor o) {

       return this .compareTo(o);

    }

 

}

 

Color.java

package enumDemo;

 

public class Color {

    public static void main(String[] args) {

 

         // values() 方法: 静态方法,返回一个包含全部枚举值的数组。

       MyColor[] mc = MyColor.values ();

 

       for (MyColor mcs : mc) {

           System. out .println(mcs.getName());

 

           /**

            * 它和使用如下两种方式打印的效果是一样的 <br>

            *

            * System.out.println(mcs); <br>

            *

            * System.out.println(mcs.toString());

            */

 

           /** 枚举应用在 switch */

           switch (mcs) {

           case RED :

              System. out .println( "it's red" );

              break ;

 

           case BLUE :

              System. out .println( "it's blue" );

              break ;

 

           case YELLOW :

              System. out .println( "it's yellow" );

              break ;

 

           default :

              System. out .println( "it's green" );

           }

       }

 

       System. out .println(MyColor. RED .compareTo(mc[1])); // -1

 

    }

}

 

switch是要在有限的可能值集合中进行选择,因此它与enum正是绝佳的组合。

内容概要:本文档是一份关于交换路由配置的学习笔记,系统地介绍了网络设备的远程管理、交换机与路由器的核心配置技术。内容涵盖Telnet、SSH、Console三种远程控制方式的配置方法;详细讲解了VLAN划分原理及Access、Trunk、Hybrid端口的工作机制,以及端口镜像、端口汇聚、端口隔离等交换技术;深入解析了STP、MSTP、RSTP生成树协议的作用与配置步骤;在路由部分,涵盖了IP地址配置、DHCP服务部署(接口池与全局池)、NAT转换(静态与动态)、静态路由、RIP与OSPF动态路由协议的配置,并介绍了策略路由和ACL访问控制列表的应用;最后简要说明了华为防火墙的安全区域划分与基本安全策略配置。; 适合人群:具备一定网络基础知识,从事网络工程、运维或相关技术岗位1-3年的技术人员,以及准备参加HCIA/CCNA等认证考试的学习者。; 使用场景及目标:①掌握企业网络中常见的交换与路由配置技能,提升实际操作能力;②理解VLAN、STP、OSPF、NAT、ACL等核心技术原理并能独立完成中小型网络搭建与调试;③通过命令示例熟悉华为设备CLI配置逻辑,为项目实施和故障排查提供参考。; 阅读建议:此笔记以实用配置为主,建议结合模拟器(如eNSP或Packet Tracer)动手实践每一条命令,对照拓扑理解数据流向,重点关注VLAN间通信、路由选择机制、安全策略控制等关键环节,并注意不同设备型号间的命令差异。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值