什么叫JAVA反射机制?

能够动态获取的信息以及动态调用对象的方法的功能称为JAVA语言的反射机制。

通过反射机制,能做什么?

正常的编译是将处于JVM中的字节码(CLASS文件)进行处理

可以在程序中访问已经装载到JVM中的JAVA对象的描述,实现访问,检测和修改描述JAVA对象本身信息的功能。

(1)访问构造方法:

Constructor类的主要几个方法:

getModifiers()  获得可以解析出该构造方法所采用修饰符的整数。

getParameterTypes() 按照声明顺序以Class数组的形式获得该构造方法的各个参数的类型。

getExceptionTypes() 以Class数组的形式获得该构造方法可能抛出的异常类型。

注意 : 如果是访问的构造方法,需要根据该构造方法的入口参数的类型来访问。例如:访问一个入口参数类型依次为String和int型的方法。

objectClass.getDeclaredConstructor(String.class,int class);

objectClass.getDeclaredConstructor(new Class[]{String.class,int class});

通过java.lang.reflect.Modifier类可以解析出getModifier()方法的返回值所表示的修饰符信息,在该类中提供了一系列用来解析的静态方法,既可以查看是否被指定的修饰符修饰,还可以以字符串的形式获得所有修饰符。该类常用的静态方法如下:

isPublic(int mod)           查看是否被public修饰,如果是则返回true,不是则返回false.

toString(int mod)               以字符串的形式返回所有修饰符

(2)访问成员变量:

在通过下列一组方法访问成员变量时,将返回Field类型的对象与数组,每一个Field对象代表一个成员变量,利用Field对象可以操纵相应的成员变量。

如果是访问指定的成员变量,可以通过该成员变量的名称来访问,例如,访问一个名称为:birthday的成员变量,访问方法如下:

object.getDeclaredField("birthday");

(3)访问方法

经常用到的获取包名与类名:

(1)通过对象名:

对象名.getClass();

(2)通过类名:

类名.Class;

(3)通过反射来获取

Class.forName();

newInstance() :通过该构造方法的利用指定参数创建一个该类的对象,如果未设置参数则表示采用默认无参的构造方法

setAccessible(boolean flag) : 如果该构造方法的权限为:private,默认为不允许通过反射利用newInstance(Object...initargs)

方法创建对象。如果先执行该方法,并将入口参数设为"true",则允许创建。

JAVA 之反射(基础概念) 几个主要常用的重要的方法相关推荐

  1. 反射第一篇,学习Java的反射基础

    反射基础 什么是反射? 反射的使用 介绍:类对象 获取类对象 类对象的方法简介 使用:利用反射创建对象 例 调用特定构造方法 使用:获取成员变量并修改 例 使用:获取成员方法并调用 例 调用特定方法 ...

  2. Java的反射基础与常用方法

    一.什么是java反射 java的反射机制是指在运行状态中,对于任意的一个类,都能获取到这个类的属性和方法,无论是private还是public.对于任意的一个对象,都能调用到它的任意一个方法和属性, ...

  3. 一文看懂Java虚拟机——JVM基础概念整理

    1 基础概念 2 垃圾回收 3 虚拟机调优

  4. 8.java中面向对象---基础概念(1)(附讲解与练习)

    学习面向对象内容的三条主线 1.Java类及类的成员 属性,方法,构造器,代码块,内部块 2.面向对象的三大特征 封装 (Encapsulation) 继承 (Inheritance) 多态 ( ...

  5. Java 面试题基础概念收集(高级)

    JVM垃圾回收: GC又分为 minor GC 和 Full GC (也称为 Major GC ).Java 堆内存分为新生代和老年代,新生代中又分为1个 Eden 区域 和两个 Survivor 区 ...

  6. 【基础概念大总结】— 网络安全 Java 基础知识大汇总

    这一篇,我们介绍一下:Java语言中存在有哪些安全漏洞. 我们在渗透测试中,可以如何利用这些漏洞. 那这一篇,首先全面总结一下JAVA中的基础概念. 上课了~~~上课了~~· 目录 JVM JDK J ...

  7. Java的一些基础知识

    --   Java学习杂谈一   1. 关于动态加载机制--   学习Java比C++更容易理解OOP的思想,毕竟C++还混合了不少面向过程的成分.很多人都能背出来Java语言的特点,所谓的动态加载机 ...

  8. java nextline_Java编程语言基础的9根支柱

    Java编程的基础概念包括:数据类型,分支与循环等. 1.HelloWorld 先从最简单的Java程序开始: public class HelloWorld{ public static void ...

  9. android中通过java的反射机制获取U盘名称

    在android项目中实现Windos一样的U盘效果,需监听两个U盘的插入和拔出状态,并屏蔽本地存储,使用U盘来下载和上传文件: 在编辑代码中碰到一个问题:无法获取插入U盘的名称,于是通过java的反 ...

最新文章

  1. 移动磁盘格式化了的资料寻回方法
  2. 步步为营 .NET 设计模式学习笔记系列总结
  3. C# 设计模式,工厂方法
  4. 《Python Cookbook 3rd》笔记(3.3):数字的格式化输出
  5. Django模板(编写html代码
  6. linux 虚拟机设置好固定ip 修改了 dns 网络需要设置成桥接模式
  7. python textrank_TextRank算法提取文本摘要
  8. 被罚 50 亿后,Google 不再强制绑定 Android 默认引擎!
  9. 中心极限定理_中心极限定理的的原理与应用
  10. piggy back是什么意思?
  11. composer 介绍及安装
  12. 【语音去噪】基于matlab小波软阈值语音降噪【含Matlab源码 531期】
  13. 小程序mysql+php测试,莲米粒是一个基于PHP+MySQL+微信小程序技术栈
  14. java创建环境变量是用户还是系统_5.Java环境变量配置
  15. msdev devenv 的命令行用法
  16. 计算机编辑文档教程,腾讯TIM在线文档编辑功能使用方法教程
  17. 情侣推送早安问候之小程序订阅通知模板推送 (出现在消息列表的服务通知)
  18. linux打开txt文件命令_「linux命令详解」lsof命令解析,教你一步打开所有文件
  19. 辽宁省计算机设计大赛三等奖英语,我校在2018年辽宁省大学生计算机设计大赛中取得佳绩...
  20. 安全网络身份认证系统的设计与实现

热门文章

  1. 5G来了4G降速?负载均衡链路聚合器了解一下
  2. 基于小波变换的图像压缩解压缩仿真
  3. 异部时钟电路的FPGA设计
  4. PHP中类和文件的代码注释规范
  5. 自研服务治理框架----文章汇总
  6. Python第一周 学习笔记(1)
  7. B-树和B+树的应用:数据搜索和数据库索引
  8. Vs 2015 调试ASP.NET Core修改监听端口
  9. Demo学习: CalendarPanel
  10. 国外创意网站设计欣赏的200佳网站推荐(系列十)