栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

枚举类&注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

枚举类&注解

枚举类&注解

文章目录
  • 一、什么是枚举?
    • 1.枚举的实现
      • 自定义枚举实现
      • enum关键字实现
      • enum常用方法
      • enum类实现接口
  • 二、注解
    • 1.三个基本的Annotation
    • 2.四种元注解

一、什么是枚举?

枚:一个一个。
举:举例。
枚举类(enumertation,简写:enum):把具体的对象一个一个举例出来的类。
枚举是一组常量的集合,枚举属于一种特殊的类,里面只包含一组有限的特定的对象。

1.枚举的实现 自定义枚举实现

1.将构造器私有化,目的:防止直接 new
2.去掉setXXX方法,防止属性被修改,枚举对象值通常为只读。
3.再Season内部直接创建固定的对象。枚举对象名通常全部大写,常量的命名规。范。枚举对象根据需要,也可以有多个属性。
4.优化,可以加入Final 修饰符。

enum关键字实现

1.使用关键字enum代替class。
2.public static final Season SPRING =new Season (“春天”,“温暖”)直接使用SPRING(“春天”,“温暖”);,解读:常量名(实参列表)。
3.如果有多个常量(对象),使用逗号间隔,用分号结尾。
4.如果用enum实现,要求将定义常量对象写在前面。
5.用enum来开发一个枚举类,默认继承Enum类。
6.如果使用无参构造创建枚举对象,实参列表和小括号都可以省略。
例:

SPRING("春天","温暖"),WINTER("冬天","寒冷"),AUTUMN("秋天","凉爽"),SUMMER("夏天","炎热");
private String name;
private String desc;
enum常用方法

toString:Enum类已经重写过了,返回的是当前对象名,子类可以重写该方法,返回的是对象的属性信息。
name:返回当前对象名(常量名),子类不能重写。
ordinal:返回当前对象的位置号,默认从零开始。
values:返回当前枚举类中所有常量。
valueOf:将字符串转换成枚举对象,要求字符串必须为已有的对象名,否则报异常。
compareTo:比较两个枚举常量,比较的就是位置号。

public class EnumMethod{
	public static void main(String[] args)  {
	Season2 autumn=Season2.AUTUMN;
	//输出枚举对象的名字
	System.out.println(autumn.name());
	//输出枚举对象的序号/编号,从0开始。
	System.out.println(autumn.ordinal());
	//反编译中,values方法,返回Season2[]
	Season2[] values =Season2.values();
	for(Season2 Season:values){//增强for循环
		System.out.println(Season);
	}
	//将字符串转换成枚举对象,要求字符串必须为已有的对象名,否则报异常
	Season2 autumn1=Season2.values("AUTUMN");
		System.out.println("autumn1"+autumn1);
		System.out.println(autumn==autumn1);
	//比较两个枚举常量,比较的就是位置号。
	System.out.println(Season2.AUTUMN.compareTo(season2.SUMMER));

	}
}
enum类实现接口

1.使用enum关键字后,就不能再继承其他类了,因为enum会隐式继承Enum,而java是单继承机制。
2.枚举类和普通类一样,可以实现接口,如: enum 类名 implements 接口1,接口2{ }。

二、注解

注解(Annotation),也被称为元数据(metadata),用于修饰解释包类、方法、属性、构造器、局部变量等数据信息。
和注释一样,不注解不影响程序逻辑,但注解可以编译和与运行,相当于嵌入在代码中的补充信息。
在JavaSE中,注解的使用目的比较简单,例如标记过的功能、忽略警告等。在JavaEE中注解占据了更重要的角色,例如配置应用程序的任何切面,代替JavaEE旧版遗留的繁冗代码和XML配置等。
注意:使用Annotation 时,要增加一个@符号,把它当修饰符使用,用于修饰它支持的程序元素。

1.三个基本的Annotation

(1)@Override:限定某个方法,重写父类方法,该注解只能用于方法。@Override只能修饰方法,@Target是修饰注解的注解,称为元注解。

//父类
class Father{
	public void fly(){//如果父类里没有方法,会报错
		System.out.println("Father fly...");
	}
}

calss son extends Father{
@Override
public void fly(){
		System.out.println("son fly...");
	}
}

(2)@Deprecated:用于表示某个程序元素(类、方法等),已过时。@Deprecated可以修饰类、方法、字段、包、参数等等,可以做版本生级使用。

public class Deprecated{
	public static void main(String[] args)  {
		A a=new A();
		a.hi();
		System.out.println(a.n1);
	}
}
//已过时,不推荐使用
@Deprecated
class A{
    @Deprecated
	public int n1=10;
	@Deprecated
	public void hi(){
	}	
}

(3)@SuppressWarnings:抑制编译器警告。

public class SuppressWarnings{
@SuppressWarnings({""})
		//在({""})中,可以写入你希望抑制(不显示)的警告信息
	public static void main(String[] args)  {
		list list =new Arraylsit();
		list.add("jack");
		list.add("tom");
		list.add("mary");
		int i;
		System.out.println(list.get(1));
		
	}
2.四种元注解

(1)Retention :指定注解的作用范围,三种:SOURCE,CLASS,RUNTIME。

①RetentionPolicy.SOURCE:编译器使用后,直接丢弃这种策略的注释。
②RetentionPolicy.CLASS:编译器把注释记录在class文件中,当Java运行程序时,JVM不会保留注释。这是默认值。
③RetentionPolicy.RUNTIME:编译器把注释记录在class文件中,当Java运行程序时,JVM会保留注释。程序可以通过反射获取该注释。

(2)Target:指定注解可以在哪些地方使用。

@Target用于修饰 Annotation 定义,用于指定被修饰的 Annotation 能用于修饰哪些程序元素。 @Target 也包含一个名为 value 的成员变量。

(3)documented:指定该注解是否会在javadoc体现。

@documented:用于指定被该元Annotation修饰的Annotation类将被工具javadoc提取成文档,在生成文档时,可以看到该注释。
定义为documented的注解必须设置Retention值为RUNTIME

(4)Inheried:子类会继承父类注解。

被它修饰的Anotation具有继承性,如果某个类使用了被@Inheried修饰的Annotation,则子类将自动具有该注释。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/310053.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号