java 枚举,注解

枚举 单例(结果只在一个很小的范围内)

enum name{

​ value1,value;

}

name.value;

枚举类型不能被继承(反编译之后的字节码类文件被赋上了final

(还有static))

枚举还继承了其他的类

public abstract class Enum《<E extends Enum》{}

枚举类型中还有默认添加进来的方法
values() 方法,可以返回这个枚举类型的所有对象,返回类型是数组
valueOf(String str) 方法,通过一个字符串可以返回枚举对象,这个字符串参数就是枚举对象的名字

枚举类型会从父类中继承过来一些方法(具体可以查看其固定的父类型),例如
String name(),返回这个枚举对象的名字
int ordinal(),返回这个枚举对象的编号,默认从0开始

enum与Enum的区别

enum就是一个关键字

Enum是java.lang包的一个类

枚举里创建构造器必须为私有

在枚举类型中,除了可以指定对象的个数和名称之外,还可以定义属性和方法

如果定义的是抽象方法,那每一个实例都要实现这个抽象方法

枚举里也可以继承接口,方法也需要每一个实例实现

switch(byte int short char string 枚举)

注解(本质上是接口)

注解(Annotation),是jdk5.0引入的技术,用它可以对java中的某一个段程序进行说明或标注,并且这个注解的信息可以被其他程序使用特定的方式读取到,从而完成相应的操作。

public class Person {
    @Override
    public String toString() {
    	return super.toString();
    }
}

编译器在编译该类的时候,会读取到toString方法上的注解@Override,从而帮我们检查这个方法是否是重写父类中的,如果父类中没有这个方法,则编译报错

注解和注释的区别:

注解是给其他程序看的,通过参数的设置,可以在编译后class文件中【保留】注解的信息,其他程序读取后,可以完成特定的操作
注释是给程序员看的,无论怎么设置,编译后class文件中都是【没有】注释信息,方便程序员快速了解代码的作用或结构

定义注解的格式如下:请添加图片描述
请添加图片描述

请添加图片描述

public 可以省去不写,默认就是 public

只能用在注解上面的注解称为元注解

注解的使用范围有:

TYPE,使用在类、接口、注解、枚举等类型上面

FIELD,使用在属性上面

METHOD,使用在方法上面

PARAMETER,使用在方法的参数前面

CONSTRUCTOR,使用在构造器上面(了解)

LOCAL_VARIABLE,使用在局部变量上面(了解)

ANNOTATION_TYPE,使用在注解类型上面(了解)

PACKAGE,使用在包上面(了解)

包注解只能写在package-info.java文件中

package-info.java文件里面,只能包含package声明,并做出描述,以便将来生成doc文 件,可以从API源码src.zip中,看到每个包下面都可以对应的package-info.java文件对该包做出 描述

TYPE_PARAMETER,使用在声明泛型参数前面,JDK1.8新增(了解)

TYPE_USE,使用在代码中任何类型前面,JDK1.8新增(了解)

注解的使用范围,都定义在了一个枚举类中:

package java.lang.annotation;
public enum ElementType {
    /** Class, interface (including annotation type), or enum declaration */
    TYPE,
    /** Field declaration (includes enum constants) */
    FIELD,
    /** Method declaration */
    METHOD,
    /** Formal parameter declaration */
    PARAMETER,
    /** Constructor declaration */
    CONSTRUCTOR,
    /** Local variable declaration */
    LOCAL_VARIABLE,
    /** Annotation type declaration */
    ANNOTATION_TYPE,
    /** Package declaration */
    PACKAGE,
    /**
    * Type parameter declaration
    *
    * @since 1.8
    */
    TYPE_PARAMETER,
    /**
    * Use of a type
    *
    * @since 1.8
    */
    TYPE_USE
}

内置的注解
Java 定义了一套注解,共有 7 个,3 个在 java.lang 中,剩下 4 个在 java.lang.annotation 中。

作用在代码的注解是

@Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。
@Deprecated - 标记过时方法。如果使用该方法,会报编译警告。
@SuppressWarnings - 指示编译器去忽略注解中声明的警告。
作用在其他注解的注解(或者说 元注解)是:

@Retention - 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。
@Documented - 标记这些注解是否包含在用户文档中。
@Target - 标记这个注解应该是哪种 Java 成员。
@Inherited - 标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)
从 Java 7 开始,额外添加了 3 个注解:

@SafeVarargs - Java 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。
@FunctionalInterface - Java 8 开始支持,标识一个匿名函数或函数式接口。
@Repeatable - Java 8 开始支持,标识某注解可以在同一个声明上使用多次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值