java反射机制原理是什么
java反射机制原理:1、对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法;2、一切皆对象,类也是对象;3、当【Animal.class】在硬盘中时是一个文件,当载入到内存中,可以认为是一个对象。
java反射机制原理:
一、反射机制的概念:
指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用它的任意一个方法.这种动态获取信息,以及动态调用对象方法的功能叫java语言的反射机制.
二、反射机制的应用:
生成动态代理,面向切片编程(在调用方法的前后各加栈帧).
三、反射机制的原理:
1、首先明确的概念: 一切皆对象----类也是对象.
2、然后知道类中的内容 :modifier constructor field method.
3、其次明白加载: 当Animal.class在硬盘中时,是一个文件,当载入到内存中,可以认为是一个对象,是java.lang.class的对象.
当运行程序时,实例化时产生Animal.class对象,这两个对象有什么区别?
如下图,上面的Animal.class对象是java.lang.class的对象;下面的对象是Animal.class实例化产生的对象
4、当Animal.class载入到JVM中,JVM是怎么识别Animal.class中含有的方法,成员变量,构造方法等内容?
如下图, Animal.class实例化对象中成员变量 毛色 =红色;
加载到内存的时候,毛色=null,是在实例化的时候毛色被赋值为红色.
Animal.class中毛色这个属性对于java.lang.class来说,是Field的一个属性值, 毛色对于java.lang.class来说也是一个对象.这也是反射机制动态获取信息,以及动态调用对象方法的原因.
下图是Java.lang.class 中的方法
在java.lang.class中,毛色是Field的一个属性值,Animal中所有的方法,成员变量,构造器,修饰符都是按照java.lang.class中的标准去写的,否则会在编译的时候报错
四、放射机制简单实例代码
public class _14_ReflectTest07 { public static void main(String[] args) throws Exception{ //1.获取类 Class c = Class.forName("_12_CustomerService"); //获取某个特定的方法 //通过:方法名+形参列表 Method m = c.getDeclaredMethod("login",String.class,String.class); //通过反射机制执行login方法. Object o = c.newInstance(); //调用o对象的m方法,传递"admin""123"参数,方法的执行结果是retValue Object retValue = m.invoke(o, "admin","123"); System.out.println(retValue); //true } } public class _12_CustomerService { //登录 public boolean login(String name,String pwd){ if("admin".equals(name) && "123".equals(pwd)){ return true; } return false; } //退出 public void logout(){ System.out.println("系统已安全退出!"); } }
相关学习推荐:java基础教程
以上是java反射机制原理是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Java 8引入了Stream API,提供了一种强大且表达力丰富的处理数据集合的方式。然而,使用Stream时,一个常见问题是:如何从forEach操作中中断或返回? 传统循环允许提前中断或返回,但Stream的forEach方法并不直接支持这种方式。本文将解释原因,并探讨在Stream处理系统中实现提前终止的替代方法。 延伸阅读: Java Stream API改进 理解Stream forEach forEach方法是一个终端操作,它对Stream中的每个元素执行一个操作。它的设计意图是处

胶囊是一种三维几何图形,由一个圆柱体和两端各一个半球体组成。胶囊的体积可以通过将圆柱体的体积和两端半球体的体积相加来计算。本教程将讨论如何使用不同的方法在Java中计算给定胶囊的体积。 胶囊体积公式 胶囊体积的公式如下: 胶囊体积 = 圆柱体体积 两个半球体体积 其中, r: 半球体的半径。 h: 圆柱体的高度(不包括半球体)。 例子 1 输入 半径 = 5 单位 高度 = 10 单位 输出 体积 = 1570.8 立方单位 解释 使用公式计算体积: 体积 = π × r2 × h (4
