有什么免费做h5的素材网站,关联词有哪些 全部,免费服务器空间,久久建筑网碗扣式钢管脚手架安全技术规范1.自定义类实现枚举效果
现在有这么一个需求#xff1a; 如果想要表示固定数量的固定值的话 用什么类型比较好 如果从已知的类型来看 仿佛什么类型也不太合适 比如用int类型标识的话 不符合我固定数量的固定值的要求 我们假设用一个类去实现这个需求#xff1a; 在这个类中提…1.自定义类实现枚举效果
现在有这么一个需求 如果想要表示固定数量的固定值的话 用什么类型比较好 如果从已知的类型来看 仿佛什么类型也不太合适 比如用int类型标识的话 不符合我固定数量的固定值的要求 我们假设用一个类去实现这个需求 在这个类中提供一个私有的构造方法 防止外界随随便便根据这个类创建任意数量的对象 在提供几个公有的常量(几个体现了固定数量这个字眼 常量则体现了固定值这个字眼) 实现如下所示
public class Season{private Season(){}public static final Season SPRING new Season();public static final Season SUMMER new Season();public static final Season FALL new Season();public static final Season WINTER new Season();
}
public class Main {public static void main(String[] args) {// 然后根据不同的枚举值做出不同的操作// 1.首先通过if-else语句实现这个需求Season s Season.SPRING;if(s Season.SPRING){System.out.println(春天);}else if(s Season.SUMMER){System.out.println(夏天);}else if(s Season.FALL){System.out.println(秋天);}else if(s Season.WINTER){System.out.println(冬天);}// 2.如果想要通过switch语句实现判断 显然是不可取的 因为switch语句的()只能储存整型、字符串类型以及枚举类型 这个属于引用类型 因此不能通过switch实现这个判断效果}
}2.枚举类型
如果只是要求取值为固定数量的固定值的话 那么可以使用枚举类型 枚举就是由固定数量的固定值所组成的
public enum Season{SPRING, SUMMER, FALL, WINTER
}
public class Main {public static void main(String[] args) {// 然后根据不同的枚举值做出不同的操作// 1.首先通过if-else语句实现这个需求
// Season s Season.SPRING;
// if(s Season.SPRING){
// System.out.println(春天);
// }else if(s Season.SUMMER){
// System.out.println(夏天);
// }else if(s Season.FALL){
// System.out.println(秋天);
// }else if(s Season.WINTER) {
// System.out.println(冬天);
// }// 2.然后可以通过switch语句实现这个需求Season s Season.SPRING;switch(s){case SPRING:System.out.println(春天);break;case SUMMER:System.out.println(夏天);break;case FALL:System.out.println(秋天);break;case WINTER:System.out.println(冬天);}System.out.println(s.ordinal());// 你可以打印这个常量值在枚举中的索引System.out.println(s.name());// 你也可以打印这个常量值在枚举中的名称}
}上述代码中值得注意的是如果我们要通过switch语句对枚举类型中定义的常量进行判断的话 那么我们可以省略case语句中的枚举名称
1.枚举的使用注意
枚举的本质是类 所有枚举类型都隐式的继承自java.lang.Enum
枚举定义完常量以后 可以继续定义成员变量、方法(但是注意最后一个常量定义完之后需要以分号结尾)
枚举的方法权限必须是无修饰符或者private(其实无修饰符的效果和private的效果一样) Java会主动调用构造方法来初始化每一个常量 你不能手动调用构造方法(如果Java允许你手动调用构造方法的话 那么就会破坏枚举由固定数量组成的规定 因为你因此可以定义任意数量的固定值)
2.自定义构造方法的枚举
public enum Season{SPRING(5, 15), SUMMER(25, 35), FALL(15, 25), WINTER(-5, 5);// 这边就很明显可以看出常量是通过主动调用构造方法来定义的private int min;// 用于表示季节的最低温度private int max;// 用于表示季节的最高温度Season(int min, int max){this.min min;this.max max;}public int getMax(){return max;}public int getMin(){return min;}
}
public class Main {public static void main(String[] args) {Season s Season.SPRING;System.out.println(s.getMax());System.out.println(s.getMin());}
}