黑马程序员技术交流社区
标题:
关于枚举...
[打印本页]
作者:
朴日男
时间:
2014-10-17 12:12
标题:
关于枚举...
枚举到底是什么东西? 视频全看了一遍 , 只在 集合框架 Vector 的时候就提了一下 也没细说 -0 - , 序列流
SequenceInputStream 的时候Vector 又出现了 ,枚举又出现了, 就不淡定了...特此一问...求提供 枚举的有关信息, 概念, 基础, 高级应用, 都行, 有总结就更好 -0 - , 跪谢~~~
作者:
面具猴
时间:
2014-10-17 12:22
张老师的高新技术里有枚举的详细信息,
包括枚举的应用思想,实现原理,各种深度的使用方法。
其实枚举也是一个类,只不过它不允许被外部创建对象,
枚举的元素其实就是枚举内部创建的静态对象。
为的就是只能通过枚举类使用固定的枚举对象。。。
作者:
ζ_____________
时间:
2014-10-17 14:25
据说是1.5的新特性. 张老师的高薪技术的第一个涉及到的知识点, 大白话说, 枚举类中列举的那些元素(对象),就是你自定义的范围.
作者:
朴日男
时间:
2014-10-17 14:42
-0 - 高薪技术视频没了, 放了个反射.
作者:
wf111sxwf
时间:
2014-10-20 20:42
枚举貌似jdk1.0就有了吧
作者:
齐宁宁
时间:
2014-10-20 20:53
枚举继承了java.lang.Enum类,关于枚举类的几点说明
1. 所有方法都必须在元素列表下面
2. 构造方法必须私有
3. 枚举只有一个成员时,就可以作为一种单例的实现方式。(这一点我也不理解)
作者:
微微微笑
时间:
2014-10-20 22:28
首先说一说它存在的作用:
一些程序在运行时,它需要的数据不能是任意的,必须是一定范围内的值。这时使用enum可以简化代码。
例:假设一个类要求固定值为A,B,C,D,E
没有枚举之前的写法:
Class Grade{
private Crade(){}
public static final Grade A=new Grade();
public static final Grade B=new Grade();
public static final Grade C=new Grade();
public static final Grade D=new Grade();
public static final Grade E=new Grade();
}
枚举类的写法
enum Grade{
//由此可以看出,枚举类中每一个枚举值代表一个实例对象。
A,B,C,D,E;
}
enum关键字用于定义一个枚举类,枚举类只是一中特殊形式的java类,所以它也可以有构造函数,字段,方法。但枚举的构造方法一定是私有的(枚举的存在是要求数据不能是任意的,所以不能让外部程序new对象)
例1:
public class Demo1 {
public static void main(String[] args) {
System.out.println(Grade.A.getValue());
}
//class A 100-90 B 89-80 C 79-70 D 69-60 E 59-0
enum Grade{
//相当于 public static final Grade A=new Grade("100-90");
A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");
//封装每个对象对应的分数
private String value;
//构造函数必须私有
private Grade(String value){
this.value=value;
}
public String getValue(){
return value;
}
}
}
例二:定义方法,让每个枚举值有自己对应的优,良。。。
enum Grade{
A{
public String localValue() {
return "优";
}
},
B({
public String localValue(){
return "良";
}
},C{
public String localValue(){
return "一般";
}
}
,D{
public String localValue(){
return "差";
}
}
,E{
public String localValue(){
return "不及格";
}
};
public abstract String localValue();
}
public class Demo2 {
public static void main(String[] args) {
System.out.println(Grade.A.localValue());
}
}
swith语句,它除了可以接受int,byte,char,short以外,还可以接受一个枚举类型
例:
public class Demo3 {
public static void main(String[] args) {
String str="A";
Grade g=Grade.valueOf(str);
switch(g){
case A:{
System.out.println("优");
break;
}
case B:{
System.out.println("良");
break;
}
case C:{
System.out.println("一般");
break;
}
case D:{
System.out.println("及格");
break;
}
case E:{
System.out.println("差");
break;
}
}
}
}
enum Grade{
A,B,C,D,E;
}
若枚举类只有一个枚举值,则可以当作单例设计模式使用
enum Grade{
A;
}
单例饿汉式
class Grade
private Grade(){}
static Grade g=new Grade();
public static Grade getInstance(){
return g;
}
}
枚举类一样可以实现接口继承类
ava.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。详见文档。
作者:
郑飞
时间:
2014-10-21 20:02
前面也就Vector迭代中用用 想学就看高新 有专门章节 很详细的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2