求解java enum的复杂用法

computersdn 2014-02-25 03:32:17
(1)简单用法:
public static enum ConfVars {
Sunny,
Rainy,
}

这里Sunny的值会设置为0,Rainy值会设置为1.

(2)复杂用法:

public static enum ConfVars {
Sunny("hello.world", 10, 20, 30),
Rainy("see.you", true),
}

请问复杂用法中的Sunny和Rainy中各种参数的含义是什么?如何使用复杂用法中的枚举?
...全文
332 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
computersdn 2014-05-09
  • 打赏
  • 举报
回复
谢谢各位大神的回复!
乔不思 2014-04-11
  • 打赏
  • 举报
回复
package com.zsq.Enum;

public enum Enumtest{
	

	SUN{

		@Override
		public Enumtest getNext() {
			// TODO Auto-generated method stub
			return MON;
		}
		
	}
	,MON {
		@Override
		public Enumtest getNext() {
			// TODO Auto-generated method stub
			return TUE;
		}
	},
	TUE {
		@Override
		public Enumtest getNext() {
			// TODO Auto-generated method stub
			return SUN;
		}
	};
	
	private Enumtest(){}
	public  abstract Enumtest getNext();
	
	
	public static void main(String args[]){
		System.out.println(Enumtest.SUN.getNext().name());
		
	}
}
tony4geek 2014-04-11
  • 打赏
  • 举报
回复
楼上大神回复了。/
Inhibitory 2014-04-11
  • 打赏
  • 举报
回复
enum就是一个类,类怎么写enum就怎么写。 但是enum可以看成是对象池。
-江沐风- 2014-04-11
  • 打赏
  • 举报
回复
实际上Enum类型就是以Java类来实现的,没有什么新的特点; 只不过java编译器帮我们做了语法的解析和编译; 完全也可以自己实现,但没这个必要; Java为枚举类型提供了一些内置的方法; 枚举常量还可以有自己的方法; 可以很方便的遍历枚举对象;
coderliang2018 2014-04-11
  • 打赏
  • 举报
回复


public enum TrafficLamp {
        RED(30) {
            @Override
            public TrafficLamp getNextLamp() {
                return GREEN;
            }
        }, GREEN(45) {
            @Override
            public TrafficLamp getNextLamp() {
                return YELLOW;
            }
        }, YELLOW(5) {
            @Override
            public TrafficLamp getNextLamp() {
                return RED;
            }
        };

        private int time;

        private TrafficLamp(int time) {
            this.time = time;
            System.out.println("enum load....");
        }

        public abstract TrafficLamp getNextLamp();

    }

枚举也是一个普通的类而已, 只不过jdk在语法上面做了一些处理, 枚举也可以有自己的构造方法(私有), 成员变量、方法等。跟普通类差不多。
乔不思 2014-04-11
  • 打赏
  • 举报
回复
楼主,你的问题是构造函数的重载问题,枚举中的元素都是这个枚举对象,因此只要在枚举中定义了构造方法,那么他的对象也必须用构造方法实例化,因为枚举中的元素定义后都是 static final 类型的,所以必须在定义的时候实例化,枚举的构造方法是私有的,当然如果你的枚举中存在抽象方法,那么每一个具体的元素都应该实现此方法(枚举中的元素是该枚举的对象),我上面贴的就是,希望能帮到你
乔不思 2014-04-11
  • 打赏
  • 举报
回复
引用 7 楼 parcool 的回复:
复杂的用法里,Sunny("hello.world", 10, 20, 30), Rainy("see.you", true),这2个是类,里面的参数是这2个内的构造方法的参数,但具体这2个类是什么怎么定义的就不得而知了!
在枚举中定义构造方法即可
parcool 2014-04-11
  • 打赏
  • 举报
回复
复杂的用法里,Sunny("hello.world", 10, 20, 30), Rainy("see.you", true),这2个是类,里面的参数是这2个内的构造方法的参数,但具体这2个类是什么怎么定义的就不得而知了!
xiaoran27 2014-02-25
  • 打赏
  • 举报
回复
路过. 首次见过这个复杂用法.

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧