Java反射机制详情
2024-09-25 13:47:57
1.运行环境
JDK8+lntellij IDEA 2018.3
2.反射机制是什么
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
3.反射机制能做什么
反射机制主要提供了以下功能:
在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;JDK8+lntellij IDEA 2018.3
在运行时调用任意一个对象的方法;
生成动态代理。
Ø获取一个对象的父类与实现的接口
public class Demo1 {
public static void main(String[] args) {
//1.
Object obj=new String();
Class cla1=obj.getClass();
//2.
Class cla2 = String.class;
//3
try {
Class cla3 = Class.forName("java.lang.String");
//4.
ClassLoader cl = ClassLoader.getSystemClassLoader();
Class cla4 = cl.loadClass("java.util.ArrayList");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} }
}
Ø反射String类的所有构造方法
public class Demo2 {
public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
// 反射String类的所有构造方法
Class cla=Student.class;
System.out.println("所有构造方法");
// Constructor[] cons = clz.getConstructors();
Constructor[] cons=cla.getDeclaredConstructors();
for(Constructor con : cons){
// System.out.println("访问修饰权限:" +
// Modifier.toString(con.getModifiers()));
// System.out.println("方法名:" + con.getName());
// System.out.println("****************************");
System.out.println(Modifier.toString(con.getModifiers()) + " "
+ con.getName());
}
//无参的构造方法
Student stu=new Student();
Constructor con=cla.getDeclaredConstructor();
Object obj = con.newInstance();
System.out.println(obj); //找带string,int类型参数的构造方法
Student s = new Student("daiyanye",12);
con = cla.getDeclaredConstructor(String.class, int.class);
obj = con.newInstance("daiyanye", 12);
con = cla.getDeclaredConstructor(String.class);
}
}
Ø效果图
心得:
柏拉图曾经说过:“成功的唯一秘诀就是坚持带最后到一分钟”
好比长途赛跑,最费力的并不是开始的第一步,
而是迈向终点的最后一步。
毅力,就是恒心的体现。
一个没有毅力的人是不能成大器的。
“加油,努力,上进,做自己,我要赢”
最新文章
- C#之Windows消息处理
- 2016 - 1- 24 大文件下载 关于NSOutStream 的使用补充
- MVC @helper (转载)
- XHTML的使用规范
- DX 绘制位图
- AlgorithmsI Programming Assignment 1: PercolationStats.java
- SSRS(rdl报表)分页显示表头和冻结表头
- iOS:删除小程序
- memcpy的实现
- svn自动备份并上传到ftp
- Spring mvc系列一之 Spring mvc简单配置
- C语言头文件中定义全局变量导致重复定义错误
- 洛谷.5300.[GXOI/GZOI2019]与或和(单调栈)
- wcf json参数返回失败问题
- base标签对svg的影响
- Hadoop HBase概念学习系列之HRegion服务器(三)
- elastic search internal
- AnsiStartsStr 和 空字符串
- 数据结构开发(14):KMP 子串查找算法
- 关于数据库SQL优化
热门文章
- JVM学习笔记(二):JVM基本结构
- 干货满满 AppGallery Connect研习社·直播深度解析优质应用开发流程
- 09- monkey命令详解
- POJ3687拓扑排序+贪心
- C#-自动获取IP
- Lombok Requires Annotation Processing Annotation processing seems to be disabled for the project ";HelloWorld";. For  plugin to function correctly, please enable it under ";Settings >; Build >; Compiler >;
- ppt技巧--线条
- MySQL中使用Show Profile
- [2021BUAA软工_助教博客]作业成绩汇总
- Visual Lab Online —— 事后分析