java中关于枚举

class Color{
private String title;
public static final int RED_FLAG=1;
public static final int GREEN_FLAG=2;
public static final int BLUE_FLAG=3;
private static final Color RED=new Color("RED");
private static final Color GREEN=new Color("GREEN");
private static final Color BLUE=new Color("BLUE");
private Color(String title) {
this.title = title;
}
public static Color getInstance(int ch) {
switch (ch) {
case RED_FLAG:
return RED;
case GREEN_FLAG:
return GREEN;
case BLUE_FLAG:
return BLUE;
default:
return null;

}
}
@Override
public String toString() {
return this.title;
}
}


public class Testdemo {


public static void main(String[] args) {
System.out.println(Color.getInstance(Color.BLUE_FLAG));


}




}
以上代码这样作的目的是限制本类实例化对象的产生个数。
enum Color{
RED,GREEN,BLUE
}
public class Testdemo{
public static void main(String[] args) {
System.out.println(Color.BLUE);
}
}
实际上枚举就是一种高级的多例设计模式。
enmu类
enmu只是对一种类型的包装,使用enmu关键字定义的枚举类本质上相当于一个class定义的类,继承了java.lang.
Enum父类。
它的方法:
1.构造方法:
protected Enum(String name,int ordinal)
2.取得枚举的名字:
pubic final String name()
3.取得枚举序号
public final int ordinal()
enum Color{
RED,GREEN,BLUE
}
public class Testdemo{
public static void main(String[] args) {
System.out.println(Color.BLUE.ordinal()+"="+Color.BLUE.name());
}
}
所有的枚举类默认继承于Enum类
还有一个方法可以取得所有的枚举数据:value()返回的是一个枚举的对象数组
enum Color{
RED,GREEN,BLUE
}
public class Testdemo{
public static void main(String[] args) {
for(Color temp:Color.values()) {
System.out.println(temp.ordinal()+"="+temp.name());
}
}

}
enum与Enum的区别:enum是一个关键字,使用enum定义的枚举类本质上就是相对于一个类继承了Enum这个抽象
类而已
枚举中定义的其他结构
枚举还可以实现接口,这样枚举中的每一个对象都变成了接口对象。
interface IColor{
public String getColor();
}
enum Color implements IColor{
RED("红色"),GREEN("绿色"),BLUE("蓝色");//如果定义有很多内容,枚举对象必须在第一行
private String title;
private Color(String title) {//构造方法私有化
this.title=title;
}
@Override
public String toString() {
return this.title;
}
public String getColor() {
return this.title;
}
}
public class Testdemo{
public static void main(String[] args) {
IColor iColor=Color.BLUE;
System.out.println(iColor.getColor());
}

}
枚举的最大特点是只有指定的几个对象可以使用
enum Sex{
MALE("男"),FEMALE("女");
private String title;


private Sex(String title) {
this.title = title;
}
 public String toString() {
return this.title;
}
}
class Person{
private String name;
private int age;
private Sex sex;
public Person(String name, int age, Sex sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}
}
public class Testdemo{
public static void main(String[] args) {
Person per=new Person("张三", 20, Sex.MALE);
System.out.println(per);
}
}
枚举本身还支持switch判断
enum Sex{
MALE,FEMALE;
}
public class Testdemo{
public static void main(String[] args) {
switch (Sex.MALE) {
case MALE:
System.out.println("男人");
break;
case FEMALE:
System.out.println("女人");
break;
}
}
}








注解
1.在进行软件项目的开发过程之中,会将所有使用到的第三方信息或者程序有关的操作都写在程序里,如果服务器地址器地址改变了,意味着需要你更改程序源代码,工程
太大。
2.使用一个配置文件,程序运行的时候要通过配置文件读取相关的配置操作,如果此时要想更改一些配置,那么只需要更改配置文件即可,也就是可以在不修改源代码的情况下
实现项目的变更。
但是在开发里不方便,一个项目的配置文件可能非常多,新的做法:将配置写回到程序里,但是与传统程序做了区分,这样就形成了注解的概念。
但是注意:并不是说写了注解以后就可以不使用配置文件了,只是现在使用的配置文件少了。
JDK提供的三个内置注解:@Override,@Deprecated,@SuppressWarnings
准确覆写(@Override)
方法覆写:发生在继承关系之中,子类定义了与父类的方法名称相同,参数列表相同,返回值类型相同的方法,被覆写的方法不能拥有比父类更为严格的访问控制权限。
class Person{
@Override//追加了此注解后将明确的表示该方法是一个覆写的方法,如果覆写错误会出现语法错误。
public String toString() {
return "world";
}
}
public class Testdemo{
public static void main(String[] args) {
System.out.println(new Person());
}

}
当你覆写的方法正确的时候,就表示没有任何问题。
在Eclipse中,只要是你覆写的方法基本都会自动添加@Override注解
声明过期处理:@Deprecated
希望在新版本中建议不要再去使用旧版本的程序类,就加一个过期的注释@Deprecated

压制警告:@SuppressWarnings
当调用了某些操作可能产生问题的时候就会出现警告进行,但是警告并不是出错,这个时候又不想总提示警告,这个时候可以使用压制警告import java.lang.ProcessBuilder.Redirect;












猜你喜欢

转载自blog.csdn.net/xjy22/article/details/80000111