枚举 注解 反射

 

1、枚举

1.1、简介

JDK1.5引入了新的类型——枚举。

在JDK1.5 之前,我们定义常量都是: public static fianl.... 。很难管理。

枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

用于定义有限数量的一组同类常量,例如:

错误级别:

低、中、高、急

一年的四季:

春、夏、秋、冬

商品的类型:

美妆、手机、电脑、男装、女装...

在枚举类型中定义的常量是该枚举类型的实例。

1.2三种定义枚举方法

方法一
public class Text1 {//类名.public static final Text1 LOW = new Text1(1);public static final Text1 MEDNUM = new Text1(50);public static final Text1 HIGH = new Text1(100);private int levelValue;// 私有封装,防止别人改级别private Text1(int levelValue){this.levelValue = levelValue;}public int getLevelValue() {return levelValue;}public void setLevelValue(int levelValue) {this.levelValue = levelValue;}
}
方法二
public enum Text2{LOW(1),MEDNUM(50),HIGH(100);private int levelValue;private Text2(int levelValue){this.levelValue = levelValue;}public int getLevelValue() {return levelValue;}public void setLevelValue(int levelValue) {this.levelValue = levelValue;}
}
方法三
public enum Text3 {LOW,MEDNUM,HIGH;
}

1.3枚举类的主要方法

2、注解

2.1、简介

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。

(给机器看的注释机制,原先的注释在java文件中,在class就没了,而注解可以)

Java 语言中的类、方法、变量、参数和包等都可以被标注。和注释不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。

主要用于:

1.编译格式检查

2.反射中解析

3.生成帮助文档

4.跟踪代码依赖等

2.2、内置注解(系统已经存在的注解)

2.3、元注解

作用在其他注解的注解

2.4.2、有哪些?

3、反射

3.1、概述

JAVA反射机制是在运行状态中,获取任意一个类的结构 , 创建对象 , 得到方法,执行方法 , 属性 !;

这种在运行状态动态获取信息以及动态调用对象方法的功能被称为java语言的反射机制。

3.2、得到Class的几种方式

1. 如果在编写代码时, 指导类的名称, 且类已经存在, 可以通过

   包名.类名.class 得到一个类的 类对象

 2. 如果拥有类的对象, 可以通过

   Class 对象.getClass() 得到一个类的 类对象

 3. 如果在编写代码时, 知道类的名称 , 可以通过

   Class.forName(包名+类名): 得到一个类的 类对象

上述的三种方式, 在调用时, 如果类在内存中不存在, 则会加载到内存 ! 如果类已经在内存中存在, 不会重复加载, 而是重复利用 !

(一个class文件 在内存中不会存在两个类对象 )

特殊的类对象

 基本数据类型的类对象:

   基本数据类型.clss

   包装类.type

 基本数据类型包装类对象:

   包装类.class

 public static void main(String[] args) throws ClassNotFoundException {//第一种加载到内存的方法,通过包名.类名.class来加载类Class c1 = Person8.class;System.out.println(c1);//第二种方式,通过类的对象获取类的信息Person8 p = new Person8() ;Class c2 = (Class) p. getClass();System . out. println(c2);//第三种方式 可以在类不存在的时候使用(动态编程)必须保证在运行之前代码类已经存在了Class person8Class = (Class) Class.forName("com.kaikeba.text4_9.Person8");System. out . println(person8Class);System . out . println((c1 == c2) & (c1 == person8Class));}

3.3获取constructor

3. 获取所有权限的单个构造方法

getDeclaredConstructor(参数类型的class对象数组)

4. 获取所有权限的构造方法数组

getDeclaredConstructors();

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部