枚举与注解

文章介绍了Java中的枚举类型,包括枚举的概述、定义格式、特点和常用方法,如name()、ordinal()、compareTo()等。此外,还讲解了Java注解的基本概念,如元数据、编译时检查和运行时解析,并提到了自定义注解以及元注解的使用示例。
摘要由CSDN通过智能技术生成

1.枚举

1.枚举的概述

  • 枚举对应英文(enumeration,简写 enum)

  • 枚举是一组常量的集合

  • 枚举属于一种特殊的类,里面只包含一组有限的特定的对象

  • 不需要提供 setXxxx() 方法,因为枚举对象值通常为只读

  • 对枚举对象/属性使用 static+final 共同修饰

  • 枚举对象名通常使用全部大写,与常量的命名规范一样

  • 枚举对象根据需要,也可以有多个属性

2.枚举的定义格式

public enum s{
    枚举项1,枚举项2,枚举项3;
}

例:

public enum Seas{
    SPRING,SUMMER,AUTUMN,WINTER;
}

3.枚举的特点

4.枚举的方法

方法名说明
String name()获取枚举项的名称

int ordinal()

返回枚举项在枚举类的索引值
int compare To(E o)比较两个枚举项,返回的是索引值的差
String toString()返回枚举常量的名称
static <T> T valueOF(Class<T> type,String name)获取指定枚举类中的指定名称的枚举值
values()

获得所有枚举项

例:

枚举类:

public enum Season {
    SPRING,SUMMER,AUTUMN,WINTER;
}

测试类:

public class EnumDemo {
    public static void main(String[] args) {
//    String name()	获取枚举项的名称
        String name=Season.SPRING.name();
        System.out.println(name);//SPRINT
        System.out.println("-------------------");

//    int ordinal()	返回枚举项在枚举类的索引值
        int index1=Season.SPRING.ordinal();
        int index2=Season.SUMMER.ordinal();
        int index3=Season.AUTUMN.ordinal();
        int index4=Season.WINTER.ordinal();
        System.out.println(index1);//0
        System.out.println(index2);//1
        System.out.println(index3);//2
        System.out.println(index4);//3
        System.out.println("-------------------");

//    int compare To(E o)	比较两个枚举项,返回的是索引值的差
        int result=Season.SPRING.compareTo(Season.WINTER);
        System.out.println(result);//-3
        System.out.println("-----------------");

//    String toString()	返回枚举常量的名称
        String s=Season.SPRING.toString();
        System.out.println(s);//SPRING
        System.out.println("------------------");

//    static <T> T valueOF(Class<T> type,String name)	获取指定枚举类中的指定名称的枚举值
        Season spring=Enum.valueOf(Season.class,"SPRING");
        System.out.println(spring);//SPRING
        System.out.println("------------------");
//    values()	获得所有枚举项
        Season[] values=Season.values();
        for (Season value : values) {
            System.out.println(value);
/*            SPRING
              SUMMER
              AUTUMN
              WINTER*/

        }
    }


}

2.注解

1.注解的概述

Java注解又称Java标注,是在 JDK5 时引入的新特性,注解(也被称为元数据)

Java注解它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联

Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能

注解的作用

1.生成文档这是最常见的,也是java 最早提供的注解;

2.在编译时进行格式检查,如@Override放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出

3.跟踪代码依赖性,实现替代配置文件功能,比较常见的是spring 2.5 开始的基于注解配置,作用就是减少配置;

4.在反射的 Class, Method, Field 等函数中,有许多于 Annotation 相关的接口,可以在反射中解析并使用 Annotation。

例:

 2.自定义注解

 用户可以根据自己的需求定义注解

 例:

public enum Season {
    SPRING,SUMMER,AUTUMN,WINTER;
}
public @interface Anno1 {
    //定义一个基本类型的属性
    int a () default 23;

    //定义一个String类型的属性
    public String name();

    //定义一个class类型的属性
    public  Class clazz() default  Anno2.class;

    //定义一个注解类型的属性
    public Anno2 anno() default @Anno2;

    //定义一个枚举类型的属性
    public Season season() default Season.SPRING;

    //以上类型的一维数组
    //int数组
    public int [] arr() default {1,2,3,4,5};

    //枚举数组
    public Season[] seasons() default {Season.SPRING,Season.SUMMER};
}
public @interface Anno2 {
}
//在使用注解的时候如果注释里面的属性没有指定默认值
//那么我们就需要动手给出注解属性的设置值
@Anno1(name = "迪迦")
public class AnnoDemo {
}

注:value:后期我们在使用注解时,如果我们只需要给注解的value属性赋值,那么value就可以省略

3.元注解

 例:

package myanno;

import java.lang.annotation.*;

@Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD})    //指定注解使用位置(成员变量,类,方法)
@Retention(RetentionPolicy.RUNTIME)  //指定该注解的存活时间
@Inherited  //指定该注解可以被继承
public @interface Anno {

}
package myanno;
@Anno
public class Person {
}
package myanno;

public class Student extends Person{
    public void show(){
        System.out.println("student.....show......");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值