Java反射(Reflect)技术

概念:动态获取在当前Java虚拟机中的类、接口或者对象等等信息(运行过程中读取内容)

1.作用(面试问题):

1.1 解除两个类之间的耦合性,即在未得到依赖类的情况下,自身应用可以通过编译

1.2 动态依赖注入(即需要某一类对象时动态生成类实例,并设置到被依赖的类中),减少编译时的内存开销  (大多框架都用)

2.获取Class对象的三种方式:(重要)

2.1、使用Class类的静态方法: Class.forName(String name) jdbc注册驱动使用过;
2.2、类的语法:T.class,代表了与其匹配的Class对象  json:解析:fastjson,gson,org开头的。。。
2.3、使用类的实例化的getClass方法: obj.getClass()

3.获取类的构造器java.lang.reflect.Constructor(了解)

3.1  public Constructor<?>[] getConstructors() 返回类中所有的public构造器集合,默认构造器的下标为0
3.2  public Constructor<T> getConstructor(Class<?>... parameterTypes) 返回指定public构造器,参数为构造器参数类型集合
3.3  public Constructor<?>[] getDeclaredConstructors() 返回类中所有的构造器,包括私有
3.4  public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) 返回任意指定的构造器
3.5  Constructor重要的方法newInstance(Object ...initargs) 实例化类

4.获取类的成员变量java.lang.reflect.Field(重要)  

4.1 public Field[] getFields() 获取所有的public成员变量
4.2 public Field getField(String?name) 获取任意public成员变量
4.3 public Field[] getDeclaredFields()  获取所有的成员变量

4.4 public Field getDeclaredField(String?name) ?获取任意指定名字的成员变量

4.5 public void setAccessible(boolean flag) 设置私有属性是否可访问

4.6 Field 重要方法set(Object obj, Object  value) 字段设置为指定的新值。

5.获取类的方法java.lang.reflect.Method(重要)

5.1 public Method[] getMethods() 获取所有的共有方法的集合
5.2 public Method?getMethod(String?name,Class<?>... parameterTypes) 获取指定公有方法
5.3 public Method[] getDeclaredMethods() ?获取所有的方法
5.4 public Method getDeclaredMethod(String?name,Class<?>... parameterTypes) 获取任意指定方法
5.5 Method重要方法invoke(Object obj ,Object…parmasType) 执行对象的方法,第一个参数为类实例对象,第二个参数:对象方法的参数

6.Class类的实例化方法 newInstance()

7.获取类的全名:getName() ;包名+类名

8.获取类的简称:getSimpleName()   类名

9.获取类的包名:getPackage()  包名

浅谈Java反射(Reflect)技术--常用方法相关推荐

  1. 浅谈Java反射机制 之 获取类的字节码文件 Class.forName(全路径名) 、getClass()、class...

    先贴上Java反射机制的概念: AVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对 ...

  2. 浅谈Java反射的实现原理

    从一段示例代码开始 Class clz = Class.forName("ClassA");Object instance = clz.newInstance();Method m ...

  3. java反射 用处_浅谈Java反射

    一.何为反射 反射就是对于任何一个类都能知道这个类的的所有属性和方法,并且对于任何一个对象都能调用他的属性和方法,而且能修改其属性. 二.反射的作用 就我的理解来看,通常我们在写代码的时会非常强调代码 ...

  4. java虚拟机类加载机制浅谈_浅谈Java虚拟机(三)之类加载机制

    在<浅谈Java虚拟机>这篇文章中,我们提到了JVM从操作系统方面来说,可以将其看做是一个进程,分别有类加载器子系统,执行引擎子系统和垃圾收集子系统.这一篇文章就简单的来谈一下类加载器子系 ...

  5. 浅谈JAVA程序破解(原创)

    浅谈JAVA程序破解 作者:舵手 申明:如转载请保证文章的完整性以及出处 最近对JAVA程序的破解比较感兴趣,拿几个行业软件练了一下手,略有心得,拿出来与菜鸟分享!注意只是一点心得, 本文并不涉及具体 ...

  6. 浅谈JAVA程序破解

    浅谈JAVA程序破解 http://www.blogjava.net/galaxyp/archive/2006/04/19/41833.html 作者:舵手 申明:如转载请保证文章的完整性以及出处 最 ...

  7. 浅谈 Java Printing

    浅谈 Java  Printing 其实怎么说呢?在写这篇博文之前,我对java printing 可以说是一无所知的.以至于我在敲文字时, 基本上是看着api文档翻译过来的.这虽然看起来非常的吃力, ...

  8. java对象头_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  9. 浅谈Java中的Set、List、Map的区别

    就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...

最新文章

  1. jQuery-1.9.1源码分析系列(十六)ajax——ajax处理流程以及核心函数
  2. 测试String, StringBuilder,StringBuffer 的数据,我居然发现这些了~~
  3. 公开最近开发的OA的框架图
  4. rmarkdown+flexdashboard制作dashboard原型
  5. Oracle问题小记五:服务启动-索引-子查询-分页存储过程
  6. Dubbo 服务 IP 注册错误踩坑经历
  7. VMware Horizon USB重定向排除特定设备
  8. 程序员应该有制定工作计划的意识
  9. html设置可编辑状态,HTML5 - 使某个页面元素或整个页面可编辑
  10. educoder:实验十一 函数
  11. 基于昇腾AI异构计算架构CANN的通用目标检测与识别一站式方案初体验
  12. GOLANG工厂模式、简单工厂模式、抽象工厂模式、创建者模式
  13. 95后程序员月薪2万背着电脑送外卖,送单途中帮人修复bug
  14. 罗技无线鼠标接收器无法配对的详细解决办法
  15. sql的datetime 数据类型
  16. 从零开始学前端 - 7. CSS盒模型 margin和padding详解
  17. godaddy nginx_2020年7种最佳GoDaddy替代品(更便宜且更可靠)
  18. 在PRESS.one这片蛮荒沃土上,我们都是拓荒者
  19. 计算机保存到桌面没有显示,电脑系统进不去桌面,没有图标怎么办?
  20. 【vue系列-05】vue的生命周期(详解)

热门文章

  1. nrf51822蓝牙芯片ble_app_proximity程序总结
  2. java ee domain作用_java EE应用概述
  3. 百度超级链XChain(2)p2p网络
  4. C++(一)——存储持续性、作用域、链接性
  5. 【数据库复习】第一章绪论
  6. 5-Interrupt Management Framework
  7. [architecture]-ARMV7架构下Linux Kernel的Userspace进程切换时保存和恢复哪些寄存器
  8. [core]-ARM A76学习笔记
  9. 统计学要学的计算机课程有哪些,统计学专业主要课程学什么_课程设置安排及分类...
  10. scrapy python3.8_银狐DevNet-网络运维Python初篇(四)netmiko抓取华为网络配置并存入本地...