枚举和注解
Posted Spring-_-Bear
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了枚举和注解相关的知识,希望对你有一定的参考价值。
第11章 枚举和注解
425. 枚举类引出
426. 自定义枚举类
- 枚举是一组常量的集合,属于一种特殊的类,里面只包含一组有限的特定的对象
- 自定义枚举类:构造器私有化;不提供 setXxx() 方法;对枚举属性使用 statc + final 修饰以实现底层优化
class Season
private final String name;
private final String description;
public static final Season SPRING = new Season("春天", "温暖");
public static final Season SUMMER = new Season("夏天", "炎热");
public static final Season AUTUMN = new Season("秋天", "凉爽");
public static final Season WINTER = new Season("冬天", "寒冷");
private Season(String name, String description)
this.name = name;
this.description = description;
427. enum枚举类1
enum Season
// 必须位于行首且以逗号间隔,分号结尾
SPRING("春天", "温暖"),
SUMMER("夏天", "炎热"),
AUTUMN("秋天", "凉爽"),
WINTER("冬天", "寒冷");
private final String name;
private final String description;
private Season(String name, String description)
this.name = name;
this.description = description;
428. enum枚举类2
- 使用 enum 关键字开发一个枚举类时,默认会继承 Enum 类,而且是一个 final 类
- 使用 Javap 反编译 enum 类
- 如果使用的是无参构造器创建枚举对象,则括号可以省略
429. enum枚举类3
430. Enum成员方法
方法名 | 功能 |
---|---|
toString() | 返回当前对象名,子类可重写 |
name() | 返回当前对象常量名,子类不可重写 |
ordinal() | 返回当前对象的位置号,默认从 0 开始 |
vales() | 返回当前枚举类中的所有常量 |
valueOf() | 将字符串转换枚举对象 |
compareTo() | 比较两个枚举常量的位置号 |
431. Enum课堂练习
432. Enum使用细节
- enum 作为一个特殊的类,依然可以实现接口,但已经继承了 Enum 类,所以不能继承其它类
433. Override注解
- 注解(Annotation)也成为元数据(Metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息
- 与注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息
- 在 Java SE 中,注解的使用目的比较简单,例如标记过时的方法、忽略警告等;在 Java EE 中注解占据重要角色,例如用来配置应用程序的任何切面、代替 Java EE 旧版中所遗留的冗杂代码和 XML 配置等
- 重写方法时如果添加了 @Override 注解,则编译器就会检查是否真的重写了父类的方法,如果未重写则编译通不过
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override
- @interface 并不指此类是接口,而是说明此类是注解类,在 JDK 1.5 之后加入
- @Target(ElementType.METHOD) 是修饰注解的注解,成为元注解,用于说明此注解作用的范围
434. Deprecated注解
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value=CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE)
public @interface Deprecated
435. SupressWarnings注解
@Target(TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE)
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings
String[] value();
436. 四种元注解
@Retention // 指定注解的作用域:SOURCE、CLASS、RUNTIME
@Target // 指定注解使用的使用位置
@Documented // 指定注解在 javadoc 中体现
@Inherited // 指定子类可以继承父类的注解
- 使用 @Documented 元注解的注解 @Retention 作用域必须为 RUNTIME
437. 家庭作业1
438. 家庭作业2
/**
* 匿名内部类
*
* @author Spring-_-Bear
* @version 2021-12-08 11:33
*/
public class Homework02
public static void main(String[] args)
Phone phone = new Phone();
// 匿名内部类,实现接口的方法,面向接口编程,动态绑定
phone.executeWork(new ICalculate()
@Override
public double cal(double num1, double num2)
return num1 - num2;
, 12, 64);
interface ICalculate
public double cal(double num1, double num2);
class Phone
public void executeWork(ICalculate iCalculate, double num1, double num2)
System.out.println(iCalculate.cal(num1, num2));
439. 家庭作业3
package charpter11;
/**
* 局部内部类
*
* @author Spring-_-Bear
* @version 2021-12-08 11:41
*/
public class Homework03
public static void main(String[] args)
new OuterClass().method();
class OuterClass
private String name = "Spring-_-Bear";
public void method()
class InnerClass
private String name = "lcx";
public void show()
System.out.println("Inner name = " + name + " Outer name = " + OuterClass.this.name);
new InnerClass().show();
440. 家庭作业4
441. 家庭作业5
442. 家庭作业6
443. 内容梳理
以上是关于枚举和注解的主要内容,如果未能解决你的问题,请参考以下文章