> 文章列表 > 枚举,注解

枚举,注解

枚举,注解

  1. 枚举什么时候需要,(只读,不需要修改)
  2. 枚举是一组常量的集合
  3. 可以这样理解:枚举属于一种特殊的类,里面只包含一组有限的特定的对象
  4. 枚举实现的两种方式
    1. 自定义类实现枚举
      package com.jshedu.enum_;public class Enumeration01 {public static void main(String[] args) {System.out.println(Season.WINTER.getName());}
      }
      //演示自定义枚举的实现
      class Season{private String name;private String desc;//定义了四个对象,固定public static final Season SPRING = new Season("春天", "温暖");public static final Season WINTER = new Season("冬天", "寒冷");public static final Season SUMMER = new Season("夏天", "炎热");public static final Season AUTUMN = new Season("秋天", "凉爽");//1.将构造器私有化,目的防止直接new//2.去掉setter方法,防止属性被修改//3.在Season内部,直接创建固定的对象//4.优化,可以加入final修饰符private Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}}

      把固定的对象创建到类中,并且把类的构造器改成私有的,外部不能直接创建对象,把set方法删掉,以防数据被更改

    2. 不需要提供set方法,因为枚举对象值通常为只读

    3. 对枚举对象/属性使用final+static共同修饰,实现底层优化

    4. 枚举对象名通常使用全部大写

    5. 枚举根据对象,可以有多个属性。

    6. 第二种方式,enum关键字实现枚举

      package com.jshedu.enum_;/* @author Mr.jia* @version 1.0*/public class Enumeration02 {public static void main(String[] args) {System.out.println(Season2.WINTER);}
      }
      enum Season2{//定义了四个对象,固定
      //    public static final Season SPRING = new Season("春天", "温暖");
      //    public static final Season WINTER = new Season("冬天", "寒冷");
      //    public static final Season SUMMER = new Season("夏天", "炎热");
      //    public static final Season AUTUMN = new Season("秋天", "凉爽");//如果使用了enum来实现枚举类//1.使用关键字enum替代class//2.public static final Season SPRING = new Season("春天", "温暖");//  直接使用SPRING("春天","温暖");//3.如果有多个常量(对象),使用,号间隔即可。//4.如果使用enum来实现枚举,要求将定义常量对象,写在前面//放在前面。调用无参可以不带括号AUTUMNSPRING("春天","温暖"),WINTER("冬天", "寒冷"),SUMMER("夏天", "炎热"),AUTUMN;private String name;private String desc;private Season2(){        }//无参构造器private Season2(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\\'' +", desc='" + desc + '\\'' +'}';}
      }
      

      代码变得简洁了

    7. 当我们使用enum关键字开发一个枚举类时,默认会继承Enum类,而且是一个final类,使用javap反编译工具看。

    8. 如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略。

    9. 枚举对象必须放在枚举类的行首。

  5. Enum类的各种方法的使用:Enum类的各种方法的使用包括:values()、valueOf()、name()和ordinal()等。其中,values()方法用于返回枚举类型的所有值,valueOf()方法用于返回指定名称的枚举常量,name()方法用于返回枚举常量的名称,而ordinal()方法则用于返回枚举常量的位置,comrpareTo比较两个枚举常量,比较的就是编号ordinal那个号。

  6. package com.jshedu.enum_;/* @author Mr.jia* @version 1.0*/public class Enumeration03 {public static void main(String[] args) {Week[] values = Week.values();//增强for循环,把values的值赋给value,然后输出,直到values值输出完。for (Week value:values) {System.out.println(value);}}}
    enum Week{MONDAY("星期一"),TUESDAY("星期二"),WEDNESDAY("星期三");private String name;private Week(String name) {this.name = name;}public String getName() {return name;}//这是返回的东西@Overridepublic String toString() {return name;}
    }
    /*
    星期一
    星期二
    星期三*/
    

    values()是需要for循环输出的?

  7. enum实现接口

    1. 使用enum关键字后,就不能再继承其他类了,因为enum会隐式继承Enum,而java是单继承机制

    2. 枚举类和普通类一样,可以实现接口:enum 类名 implements 接口1,接口2{}。

  8. 注解Annotation:也被称为元数据,用于修饰解释包,类,方法,属性,构造器,局部变量等数据信息。

    1. 和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。

  9. 三个基本的Annotation:

    1. @Override:限定某个方法,是重写父类方法,该注解只能用于方法

      package com.jshedu.annotation;/* @author Mr.jia* @version 1.0*/public class Override_ {public static void main(String[] args) {}
      }
      class Father{public void fly(){System.out.println("Father fly...");}
      }
      class Son extends Father{//1.@Override注解放在fly方法上,表示子类的fly方法时重写了父类的fly//2.这里如果没有写@Override,还是重写了父类的fly//3.如果写了@Override注解,编译器就会去检查该方法是否重写了父类的//  方法,如果的确写了,则编译通过,如果没有构成重写,则编译错误。//4.@interface表示一个注解类。@Overridepublic void fly() {System.out.println("Son fly....");}//这里父类没有see方法就会报错。ethod does not override method from its superclass
      //    @Override
      //    public void see(){
      //
      //    }
      }
    2. @Deprecated:用于表示某个成员元素(类,方法,字段,包,参数等)已过时,但不代表不能用,即不推荐使用。可以做版本升级过度使用。

    3. @SuppressWarnings:抑制编译器警告,

      1. @SuppressWarnings放在main方法,那么抑制警告的范围就是main

股票信息