「内部枚举java」内部枚举类spring
今天给各位分享内部枚举java的知识,其中也会对内部枚举类spring进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、Java中的枚举是什么?他的具体用法是什么呢?
- 2、Java内部类,跟枚举的用处。举个例子~
- 3、java中的枚举到底有什么作用?
- 4、java枚举作内部类?
- 5、Java 枚举类型必须定义在静态类中
Java中的枚举是什么?他的具体用法是什么呢?
Java中的枚举是什么?他的具体用法是什么呢?
枚举就是把集合里的对象元素
一个一个提取出来!比如说
你买了一合巧克力
里面有草莓味的
有香草口味的
有苹果口味的
你想把他们拿出来
就必须用“手”一个一个把他们拿出来
并且一次只能取一个哦
这里的手就是枚举器
你取的动作就是枚举的过程
具体的用法
这个我就不好说了
推荐
你看看JDK1.5的API和参考别人的范例
看完了
基本可以理解
枚举几种选择(有迭代器和枚举器2种)和如何判断是否已经取完了对象元素
等等
我不是很喜欢讲语法
所以不好意思我就不给你丢代码了~
Java内部类,跟枚举的用处。举个例子~
有时一个类很小,你写这个类的目的也许只是在其中写一个方法,那就没必要正儿八经的去创建一个新文件,就直接写在内部。枚举的用处就是不让创建对象,你要用我这个类的对象就用我这里枚举(你可以理解为列举)出来的。举个例子比如“星期”类,就只枚举七个对象,别人要用那就用
我这里写好的。这样才比较符合“星期”这个类在现实中的特征,才算描述的比较清楚。要不然你创建一个“星期八”
java中的枚举到底有什么作用?
枚举是一种规范它规范了参数的形式,这样就可以不用考虑类型的不匹配并且显式的替代了int型参数可能带来的模糊概念 枚举像一个类,又像一个数组。
Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。 当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。
1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。
2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。
3.Enum默认实现了java.lang.Comparable接口。
4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.
5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。
6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。
7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。
了解了这些基本特性,我们来看看如何使用它们。
1.遍历所有有枚举值. 知道了有values方法,我们可以轻车熟路地用ForEach循环来遍历了枚举值了。
for (Color c: Color.values())
System.out.println(“find value:” + c);
2.在enum中定义方法和变量,比如我们可以为Color增加一个方法随机返回一个颜色。
public enum Color {
Red,
Green,
Blue;
private static int number = Color.values().length ;
public static Color getRandomColor(){
long random = System.currentTimeMillis() % number;
switch ((int) random){
case 0:
return Color.Red;
case 1:
return Color.Green;
case 2:
return Color.Blue;
default : return Color.Red;
}
}
}
可以看出这在枚举类型里定义变量和方法和在普通类里面定义方法和变量没有什么区别。唯一要注意的只是变量和方法定义必须放在所有枚举值定义的后面,否则编译器会给出一个错误。
3.覆载(Override)toString, valueOf方法
前面我们已经知道enum提供了toString,valueOf等方法,很多时候我们都需要覆载默认的toString方法,那么对于enum我们怎么做呢。其实这和覆载一个普通class的toString方法没有什么区别。
….
public String toString(){
switch (this){
case Red:
return "Color.Red";
case Green:
return "Color.Green";
case Blue:
return "Color.Blue";
default:
return "Unknow Color";
}
}
….
这时我们可以看到,此时再用前面的遍历代码打印出来的是
Color.Red
Color.Green
Color.Blue
而不是
Red
Green
Blue.
可以看到toString确实是被覆载了。一般来说在覆载toString的时候我们同时也应该覆载valueOf方法,以保持它们相互的一致性。
4.使用构造函数
虽然enum不可以有public的构造函数,但是我们还是可以定义private的构造函数,在enum内部使用。还是用Color这个例子。
public enum Color {
Red("This is Red"),
Green("This is Green"),
Blue("This is Blue");
private String desc;
Color(String desc){
this.desc = desc;
}
public String getDesc(){
return this.desc;
}
}
这里我们为每一个颜色提供了一个说明信息, 然后定义了一个构造函数接受这个说明信息。
要注意这里构造函数不能为public或者protected, 从而保证构造函数只能在内部使用,客户代码不能new一个枚举值的实例出来。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。
5.实现特定的接口
我们已经知道enum可以定义变量和方法,它要实现一个接口也和普通class实现一个接口一样,这里就不作示例了。
6.定义枚举值自己的方法。
前面我们看到可以为enum定义一些方法,其实我们甚至可以为每一个枚举值定义方法。这样,我们前面覆载 toString的例子可以被改写成这样。
public enum Color {
Red {
public String toString(){
return "Color.Red";
}
},
Green {
public String toString(){
return "Color.Green";
}
},
Blue{
public String toString(){
return "Color.Blue";
}
};
}
从逻辑上来说这样比原先提供一个“全局“的toString方法要清晰一些。
总的来说,enum作为一个全新定义的类型,是希望能够帮助程序员写出的代码更加简单易懂,个
人觉得一般也不需要过多的使用enum的一些高级特性,否则就和简单易懂的初衷想违背了。
java枚举作内部类?
因为 a,b,c,d相当于常量吧。 应该枚举类应该和静态的内部类是一致的。 因为内部类是根据外部类实例的创建而创建实例的。 而枚举类是不会根据外部类的创建而重新创建实例的。
Java 枚举类型必须定义在静态类中
应该是enum类型本质是静态类,普通内部类里当然不能定义静态类。静态类是编译期确定的,普通内部类是运行时确定的,所以静态内部类的普通成员父类要到运行期才能确定,就不可能编译确定该普通内部类的静态内部类,就是说,该静态内部类的上层父类当中不能有一层是普通内部类,编译器编译时中间就断链了。即在内部类中只能静态包含静态,不能普通包含静态。希望你能理解。
关于内部枚举java和内部枚举类spring的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。