网站首页 > java教程 正文
反射机制
AVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制在框架设计中极为广泛,需要深入理解。
反射基础
RTTI(Run-Time Type Identification)运行时类型识别,其作用是在运行时识别一个对象的类型和类的信息。
反射就是把java类中的各种成分映射成一个个的Java对象
例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。
反射的使用
TIP
基于此我们如何通过反射获取Class类对象以及类中的成员变量、方法、构造方法等
输出的结果
注解和反射
* 注解:Annotation,Java标注,JDK5引入的一种机制。
* Java中类,方法,变量,参数,包都可以被标注
*
* 元注解:专门给注解加的注解
我们发现注解中可以有方法,
* 1、定义方法的格式:String name();
* 2、可以有默认值,也可以没有,如果没有默认值在使用的时候必须填写对应的值
* 如果需要有默认值,使用default指定默认值。
* 3、如果想在使用的时候不指定具体的名字,
*
* 如果不学习反射,注解没啥用!!!
在java的整个的注解体系中,有3个非常重要的主干类,
* 1、Annotation 接口,定义一些常用的方法
* 2、ElementType 枚举
* 它用来指定注解的类型。说人话,我的注解要用在哪里???
* 3、RetentionPolicy 枚举
* 它用来指定注解的策略。不同类型的策略指定的注解的作用域不同。
* (1)SOURCE,注解仅存在于编译器处理期间,编译期处理完之后,这个注解就没用了
* (2)CLASS,注解在.class文件中依然有效。
* (3)RUNTIME,编译期是不起作用的,只有在运行期才由JVM读取。
Java自带的注解
10个。4个注解java.lang.annotation
6个注解在java.lang
作用在代码上的注解
- 1、@Override,检查该方法是否是重写方法。如果返现其父类,或者是引用的接口中没有该方法,会报错
- 2、@Deprecated,标记的方法,过时的方法。
- 3、@SuppressWarnings编辑器去忽略警告
- 4、@SafeVarargs,JDK7支持忽略任何使用参数为泛型变量的方法或构造器产生的警告
- 5、@FunctionalInterface,JDK8开始支持,表示一个接口为函数式接口
- 6、@Repeatable,JDK8开始支持,标识某个注解可以在同一个声明上使用多次
all:忽略所有警告
boxing:忽略装箱、拆箱警告
rawtypes:使用生成时没有指定数据类型
unchecked:忽略没有进行类型检查操作的警告
unused:忽略没有使用的警告
元注解:
- 1、@Retention:标识这个注解作用域
- 2、@Documented:标记这个注解是否包含在用户文档中
- 3、@Target:这个注解可以修饰哪些信息
- 4、@Inherited:如果一个类用上了@Inherited注解,那么其子类也会继承这个注解
package com.jsoft.morning;
@Bean
public class Dog {
public String type;
private String name;
private String color;
public Dog() {
}
private Dog(String name){
this.name = name;
}
public Dog(String name, String color) {
this.name = name;
this.color = color;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@MyAnnotation(value = 20,age=10)
public void show(String str) {
System.out.println("show方法..." + str);
}
public String info() {
return "info方法";
}
private void fun() {
System.out.println("私有的fun方法...");
}
}
猜你喜欢
- 2024-09-30 java反射机制深度探讨(java反射机制的原理和用途)
- 2024-09-30 Java中的反射到底有什么用?(java反射的用途及实现)
- 2024-09-30 Java的反射机制是什么?#干货分享(java反射机制实现原理)
- 2024-09-30 Java基础:反射机制(java反射机制实例)
- 2024-09-30 想成为java架构师,你首先得掌握的Java反射机制,安排
- 2024-09-30 Java面试篇基础部分-Java反射机制是什么
- 2024-09-30 谈谈Java反射机制(java的反射机制)
- 2024-09-30 Java后端精选技术:Java的反射机制
- 2024-09-30 Java的反射机制大家都会了,你还不会吗?
- 2024-09-30 Java反射机制(Java反射机制的作用包括)
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)