Java学习第三十六天<枚举类><Override注解><Deprecated注解><SuppressWarnings 注解><四种元注解>

枚举类

package chapter12;
​
public class Enumeration01 {
    public static void main(String[] args) {
        Season season = new Season("春天", "温暖");
        Season winter = new Season("冬天", "寒冷");
        //不能体现季节是4个固定的对象
        //枚举类:把具体对象一个个例举出来的类
    }
}
class Season{
    private String name;
    private String desc;
​
    public Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
​
    public String getName() {
        return name;
    }
​
    public void setName(String name) {
        this.name = name;
    }
​
    public String getDesc() {
        return desc;
    }
​
    public void setDesc(String desc) {
        this.desc = desc;
    }
}

package chapter12;
//演示定义枚举实现
public class Enumeration02 {
    public static void main(String[] args) {
        System.out.println(Season2.SPRING);
        System.out.println(Season2.WINTER);
    }
}
class Season2{
    private String name;
    private String desc;
    //枚举对象通常大写,根据需要可有多个属性
    public static Season2 SPRING=new Season2("春天","温暖");
    public static Season2 WINTER=new Season2("冬天","寒冷");
    //构造器私有化,防止直接new
    //去掉set,防止属性修改
    //Season内部创建固定对象,限定了对象个数
    //优化:可以加final修饰符(因为static会导致season类加载)
    private Season2(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
​
    public String getName() {
        return name;
    }
​
    public String getDesc() {
        return desc;
    }
​
​
    @Override
    public String toString() {
        return "Season2{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

package chapter12;
​
public class Enumeration03 {
    public static void main(String[] args) {
        System.out.println(Season3.SPRING);
        System.out.println(Season3.WINTER);
        System.out.println(Season3.What);
​
    }
}
//使用enum关键字实现枚举类 enum替代class
// public static Season2 SPRING=new Season2("春天","温暖");直接用 SPRING("春天","温暖")
//若有多个常量对象,直接用,隔开 要放最前面
enum Season3{
    SPRING("春天","温暖"),WINTER("冬天","寒冷"),What;//调用无惨构造 What()
    private String name;
    private String desc;
​
    private Season3(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }
​
    Season3() {
    }
​
    public String getName() {
        return name;
    }
​
    public String getDesc() {
        return desc;
    }
​
​
    @Override
    public String toString() {
        return "Season3{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}

package chapter12;
​
public class EnumDetail {
    public static void main(String[] args) {
        Music.CLASSICMUSIC.playing();
    }
}
interface IPlaying{
    public void playing();
}
enum Music implements IPlaying{
    CLASSICMUSIC;// public static Music CLASSICMUSIC =new Music();直接用 CLASSICMUSIC()
   //是Music的对象 可调用其方法
    @Override
    public void playing() {
        System.out.println("播放");
    }
}

package chapter12;
​
public class EnumExercise01 {
    public static void main(String[] args) {
        Gender2 boy = Gender2.BOY;
        Gender2 boy2 = Gender2.BOY;
        Gender2 girl = Gender2.GIRL;
        System.out.println(girl);
        System.out.println(boy);//输出BOY,本质就是调用Gender2父类
          /*Enum的toString()
        public String toString(){
        return name;
        }
         */
        System.out.println(boy==boy2);
​
    }
}
enum Gender2{
    BOY,GIRL;
}

package chapter12;
​
public class EnumExercise02 {
    public static void main(String[] args) {
        Week[] values = Week.values();
        for (Week week:values) {
            System.out.println(week);
        }
    }
}
enum Week{//不能再继承,已有隐式继承
    MONDAY("星期一"),TUESDAY("星期二"),WEDNESDAY("星期三"),THURSDAY("星期四"),FRIDAY("星期五"),SATURDAY("星期六"),SUNDAY("星期天");
    private String day;
​
    Week(String day) {
        this.day = day;
    }
​
    @Override
    public String toString() {
        return  day;
    }
}

package chapter12;
​
import jdk.internal.org.objectweb.asm.tree.analysis.Value;
​
//演示类的各方法使用
public class EnumMethod {
    public static void main(String[] args) {
        //使用Season2 枚举类 演示各种方法
        //SPRING("春天","温暖"),WINTER("冬天","寒冷"),What;
        Season3 spring = Season3.SPRING;
        System.out.println(spring.name());//输出对象名字
        System.out.println(spring.ordinal());//输出的枚举对象编号
        Season3[] values = Season3.values();
        for (Season3 season: values) {//增强for循环
            System.out.println(season);//遍历取出枚举对象
        }
        int []nums={1,2,9};
        for (int i = 0; i < nums.length ; i++) {//普通for循环
            System.out.println(nums[i]);
        }
        for (int i:nums){//增强for,依次从nums数组中取出数据赋给i,取出完毕则退出for
            System.out.println("i="+i);
        }
        Season3 winter = Season3.valueOf("WINTER");//valueOf 将字符串数组转换成枚举对象,要求只能为已有常量,否则异常
        Season3 spring1 = Season3.valueOf("SPRING");
        System.out.println(winter);
        System.out.println(spring==spring1);//valueOf 找到的 是同一对象
        System.out.println(Season3.WINTER.compareTo(Season3.SPRING));//把两者枚举对象编号相减,前-后
    }
}

Override注解

package chapter13;
//Override注解不能修饰类,包
//Target 修饰注解的注解 元注解,指定注解在哪使用
public class Override {
    public static void main(String[] args) {
​
    }
}
class Father{
    public void fly(){
        System.out.println("Father fly...");
    }
}
class Son extends Father{
    @java.lang.Override
    /*
    1 放在fly方法上,表示子类的fly方法时重写了父类fly
    2 没写Override 也表示重写
    3 写了Override注解 编译器就会检查该方法是否真的重写了父类,若没构成重写会报错
    4 @interface 表示注解类
     */
    public void fly() {
        System.out.println("Son fly...");
    }
}

Deprecated注解

package chapter13;
//表示某个程序元素过时,Deprecated,修饰方法,类,字段,包,参数等
//也可作为新旧版本兼容过渡
public class Deprecated {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.n1);//10
    }
}
@java.lang.Deprecated //表示类过时了,但还能用
class A{
    @java.lang.Deprecated
    public int n1=10;
    public void hi(){
​
    }
}

SuppressWarnings 注解

package chapter13;
​
import java.util.ArrayList;
​
public class SuppressWarnings {
    //当不希望看到警告时候,可以用SuppressWarnings注解抑制警告
    //可写入不显示警告信息 all所有警告 unchecked没有检查的警告 rawtypes没有指定泛型警告 unused没有用某个变量
    //作用范围是它下边,放类上范围最大
    @java.lang.SuppressWarnings({"unchecked","rawtypes","unused"})
    public static void main(String[] args) {
       ArrayList list = new ArrayList();
       list.add("jack");
       list.add("tom");
       list.add("mary");
       int i;
        System.out.println(list.get(1));
    }
}

四种元注解

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值