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