java 枚举元素_java----枚举

枚举:

枚举这种类型占用内存空间大,根据需要选择枚举或者常量

每一个枚举元素都是一个对象

基本使用

class ColorTest{

//如果使用枚举,不需要再本类中定义...即使定义了,也用不到

// private int red;

// private int blue;

// private int black;

// private int color;

private Color colorenum;

// public void test(){

// color = red;

// color = 1;

// }

//从编码的角度(编译期),限制了colorenum的选择范围;

public void test2(){

//如果希望color强制只能为red,blue,black中的一种;不能是color = 1;

colorenum = Color.red;

//colorenum = 1; 此时会报错,编辑期不给通过

System.out.println(colorenum); //red

System.out.println(colorenum.name()); //red

System.out.println(colorenum.ordinal()); //2,枚举的序号;

System.out.println(colorenum.toString());//red

for (Color s:Color.values()) {

System.out.println(s);

}

}

public void test3(){

//存放枚举的集合

EnumSet colors = EnumSet.allOf(Color.class);

for (Color c:colors){

System.out.println(c);

}

}

public void test4() {

EnumMap map = new EnumMap(Color.class);

map.put(Color.red,"111");

map.put(Color.blue,"222");

for (Color c:map.keySet()){

System.out.println(c);

}

}

}

枚举构造方法

public class Demo{

public static void main(String[] args) {

ColorTest colorTest = new ColorTest();

colorTest.test();

}

}

enum Color {

blue,black(10),red;

//可以定义属性

private int color;

//只能定义私有的构造方法

private Color(){

System.out.println("无参构造器");

}

private Color(int color){

this.color = color;

System.out.println("有参构造器");

}

}

class ColorTest{

private Color colorenum;

public void test(){

//用到枚举类型Color,所有的构造方法都会被调用

colorenum = Color.red;

}

}

让枚举实现接口

Color.red  是一个对象,对象可以调用方法;

public class Demo{

public static void main(String[] args) {

ColorTest colorTest = new ColorTest();

colorTest.test();

}

}

interface info{

int getColor();

}

enum Color implements info{

blue,black(10),red;

//可以定义属性

private int color;

//只能定义私有的构造方法

private Color(){

System.out.println("无参构造器");

}

private Color(int color){

this.color = color;

System.out.println("有参构造器");

}

@Override

public int getColor() {

return this.color;

}

}

class ColorTest{

private Color colorenum;

public void test(){

int num = Color.red.getColor();

System.out.println(num);

int num2 = Color.black.getColor();

System.out.println(num2);

}

}

再枚举中定义抽象方法

public class Demo{

public static void main(String[] args) {

ColorTest colorTest = new ColorTest();

colorTest.test();

}

}

enum Color {

blue {

@Override

public String getColorName() {

return "blue";

}

},black() {

@Override

public String getColorName() {

return "black";

}

},red {

@Override

public String getColorName() {

return "red";

}

};

public abstract String getColorName();

}

class ColorTest{

public void test(){

String name = Color.red.getColorName();

System.out.println(name);

}

}

枚举实现单例模式

默认 public static final来修饰枚举

public class Demo{

public static void main(String[] args) {

//通过SINGLETON对象调用method方法;

EnumSingleton instance = EnumSingleton.INSTANCE.getInstance();

EnumSingleton instance1 = EnumSingleton.INSTANCE.getInstance();

System.out.println(instance==instance1);

}

}

enum EnumSingleton {

INSTANCE;

public EnumSingleton getInstance(){

return INSTANCE;

}

}

枚举用途

public interface ResultCode {

//操作是否成功,true为成功,false操作失败

boolean success();

//操作代码

int code();

//提示信息

String message();

}

@ToString

public enum CommonCode implements ResultCode{

SUCCESS(true,10000,"操作成功!"),

FAIL(false,11111,"操作失败!"),

UNAUTHENTICATED(false,10001,"此操作需要登陆系统!"),

UNAUTHORISE(false,10002,"权限不足,无权操作!"),

SERVER_ERROR(false,99999,"抱歉,系统繁忙,请稍后重试!");

//private static ImmutableMap codes ;

//操作是否成功

boolean success;

//操作代码

int code;

//提示信息

String message;

private CommonCode(boolean success,int code, String message){

this.success = success;

this.code = code;

this.message = message;

}

@Override

public boolean success() {

return success;

}

@Override

public int code() {

return code;

}

@Override

public String message() {

return message;

}

}

获取所有的枚举对象

enum HandlerBeanEnum {

//给Name赋值

AHandler("a"),

BHandler("b"),

CHandler("c");

private String Name;

public String getName() {

return Name;

}

public void setName(String name) {

Name = name;

}

private HandlerBeanEnum(String beanName) {

this.Name = beanName;

}

private HandlerBeanEnum() {

}

}

public class demo {

@Test

public void a(){

//获取所有的枚举对象

HandlerBeanEnum[] values = HandlerBeanEnum.values();

for (HandlerBeanEnum value : values) {

String aString = value.getName();

System.out.print(aString);

}

}

}

枚举优点?

可以避免反射攻击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值