2020.11.11——Java枚举和注解

一、枚举:

1.概述:

某些情况下,一个类的对象有限而且固定的。
手动实现枚举类:

  • private 修饰构造器;
  • 属性使用private final 修饰;
  • 把该类的所有实例都使用 public static final 来修饰;
  • 枚举类中每个枚举都是单例模式。

(1)枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类 。
(2)当需要定义一组常量时,强烈建议使用枚举类。
(3)如果枚举类中只有一个对象,则可以作为单例模式的实现方式。

2.使用enum定义枚举类:

(1)方式一:jdk5.0之前,自定义枚举类:

(2)方式二:jdk5.0,可以使用enum关键字定义枚举类:

1.提供当前枚举类的对象,多个对象之间用逗号隔开,末尾对象用分号结束。
2.说明:定义的枚举类默认继承于java.lang.Enum类,并实现java.lang.Seriablizable 和 java.lang.Comparable 两个接口。

enum Color 
{ 
    RED, GREEN, BLUE; 
} 

3.实现接口的枚举类:

在这里插入图片描述
即:
(1)情况一:实现接口,在Enum类中重写相关方法,此时每个枚举值调用此方法表现出相同的结果。
(2)情况二:对每个枚举值分别实实现相关方法,此时每个枚举值表现出自己所实现的方法。如下代码所示。

interface A{
	void test();
}
enum Season implements A{
	SUMMER{
		@Override
		public void test() {
			// TODO Auto-generated method stub
			
		}
	},
	WINTER{
		@Override
		public void test() {
			// TODO Auto-generated method stub
			
		}
	};
}

4.枚举类的常用方法:

在这里插入图片描述

  • values() :返回枚举类中的对象数组。该方法可以很方便地遍历所有的枚举值。
  • ordinal():方法可以找到每个枚举常量的索引,就像数组索引一样。
  • valueOf(str):返回指定字符串值的枚举对象。要求字符串必须是枚举对象的“名字”。如果不是,会有运行时异常:illegalArgumentException。
  • toString():返回当前枚举对象常量的名称

二、注解(Annotation):

1.概述:

在这里插入图片描述

2.基本的注解:

在这里插入图片描述
在这里插入图片描述

3.自定义注解:

在这里插入图片描述
在这里插入图片描述

举例:

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 注解
 * 
 *
 */
public class Test3 {
	
	@TestAnn(id=100, desc="姓名")
	String name;
}


@Target(ElementType.FIELD) //这个注解类是给其他类的属性做注解;(此处定义的为对属性做注解[FIELD])
@Retention(RetentionPolicy.RUNTIME)//定义注解的声明周期;
@Documented
@interface TestAnn{//注解名称为TestAnn;
	public int id() default 0; //注解属性为id(),默认为0
	public String desc() default "";//注解属性为desc(),默认为空字符串
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值