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);
}
}

 Ø效果图


心得:

柏拉图曾经说过:“成功的唯一秘诀就是坚持带最后到一分钟”

好比长途赛跑,最费力的并不是开始的第一步,

而是迈向终点的最后一步。

毅力,就是恒心的体现。

一个没有毅力的人是不能成大器的。

“加油,努力,上进,做自己,我要赢”

最新文章

  1. C#之Windows消息处理
  2. 2016 - 1- 24 大文件下载 关于NSOutStream 的使用补充
  3. MVC @helper (转载)
  4. XHTML的使用规范
  5. DX 绘制位图
  6. AlgorithmsI Programming Assignment 1: PercolationStats.java
  7. SSRS(rdl报表)分页显示表头和冻结表头
  8. iOS:删除小程序
  9. memcpy的实现
  10. svn自动备份并上传到ftp
  11. Spring mvc系列一之 Spring mvc简单配置
  12. C语言头文件中定义全局变量导致重复定义错误
  13. 洛谷.5300.[GXOI/GZOI2019]与或和(单调栈)
  14. wcf json参数返回失败问题
  15. base标签对svg的影响
  16. Hadoop HBase概念学习系列之HRegion服务器(三)
  17. elastic search internal
  18. AnsiStartsStr 和 空字符串
  19. 数据结构开发(14):KMP 子串查找算法
  20. 关于数据库SQL优化

热门文章

  1. JVM学习笔记(二):JVM基本结构
  2. 干货满满 AppGallery Connect研习社·直播深度解析优质应用开发流程
  3. 09- monkey命令详解
  4. POJ3687拓扑排序+贪心
  5. C#-自动获取IP
  6. 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 >
  7. ppt技巧--线条
  8. MySQL中使用Show Profile
  9. [2021BUAA软工_助教博客]作业成绩汇总
  10. Visual Lab Online —— 事后分析