对java反射机制的一些理解 柔情只为你懂 2022-09-25 05:24 151阅读 0赞 1.什么是java的反射机制? 说实话,一开始的时候我真的不知道什么是java的反射机制,反射机制又有什么用呢?甚至于在刚开始的时候,我还觉得java反射机制真的麻烦,还不如平常的使用类以及其实例对象还有方法等。但随着慢慢的理解以及了解,才发现其实java的反射机制还是很棒的,甚至于说这才是java的精髓所在,那么我们就一起来探讨一下吧: 反射(Reflection)机制:其实就是程序在运行的时候可以获取任意一个类的内部信息,也可以说是动态获取吧。 2.那么我们怎么利用反射(Reflection)去获取类的相关信息呢? 首先我们必须要了解什么是静态加载类,什么是动态加载类? 静态加载类:其实说的通俗一点的话,就是程序编译的的过程,这就是静态加载类。 动态加载类:其实说的就是程序运行的时候,可以说动态加载。 简单一点的说法就是:编译--------静态 运行---------动态 我们在控制台运行java程序的时候是不是要执行一下:javac \*.java(其实这个时候会生成一个该类的.class文件) 然后再java \*(这个时候其实运行加载的就是这个.class文件),而所谓的动态加载,就是绕过编译,在调用的时候就运行。下面通过一个简单的例子来说明一下: 比如我新建一个类: package com.mytest01; public class showObj { public void showObject(){ Person p = new person(); system.out.println(p); } 还没有运行的时候在eclispe等软件是不是会提示报错?然后你在控制台中编译是不是不通过?说找不到这个Person这个类? 那么我们稍微改一下代码看看是否还会出错: package com.mytest01; public class showObj { public void showObject(){ Class p = person.class; System.out.println(p); } class person{ } } 看看编译的时候还会不会出错? 下面我们再来谈一下我们到底应该怎么去获取类的内部信息呢? 在获取类的内部信息之前,我想说的是一点点面向对象的思想。首先什么是对象?我们常说一个实体就是一个对象,那么我们在想想java里面我们新建的类是不是一个对象呢?你可能会有疑问?对象不就还是类的实例化吗?为什么说类也是一个对象?其实也不难理解,因为我们所有新建的类其实都是java里面java.lang.Class的实例对象来的,新建一个类,其实就是实例化java.lang.Class类; 明白了这一点,我们就可以继续的往下走了,下面我们就来谈谈怎么去获取一个类的内部信息: 第一步:获取该类的类类型(这一步非常关键) 那么我们怎么去获取呢: 其实很简答,一共有三种方法: 1.利用Class c = Class.forName("")----------传就来要获取类的路径,会出现异常。 2.利用Class c = A.class ---------------------A代表该类的类名 3.利用Class c = a.getClass();---------------a代表的就是该类的实例化对象,也就是 A a = new A();这一步 通过上面的方法我们就获取了该类的一个实例对象,那么我们怎么调用类里面的成员函数,成员变量呢?(注意都是public的)如果要访问私有的要在你要获取的变量后加上setAccessible(true);例如 Filed\[\] filed = c.getFields(); field.setAccessible(true); 其实还是很简单: 1.c.getName()-------------------获取该类的类名;返回String类型的值 2.c.getFileds()------------------------获取该类的所有成员变量 c.getDeclaredFields()--------自己声明的类的成员变量; 3.c.getType()---------------------------获取该类的类型 4.c.getMethods()----------------------获取所有的方法 c.getDeclaredMethod()-----------所有声明过的方法。 ....... ..... .. 还有很多可以去查阅官方的文档。 那么我们怎么反向的去执行方法呢? 分为三步: 第一:获取类的;类类型 Class c = a.getClass(); 第二步:获取类的方法 Method m = c.getMethod("方法的名称",参数的类类型new Class\[\]\{...,.....\}); 第三部:传入参数,利用invoke()函数 Object o = m.invoke(a(实例化对象),执行函数要传进来的参数); 好了,上面就是一些java反射的浅层应用以及讲解。
相关 Java反射机制深度理解 Java反射机制是Java语言强大的特性之一,它允许程序在运行时动态地获取类的信息,包括类名、方法、属性等,并可以调用这些方法和访问属性。 以下是深入理解反射机制的几个关键点 冷不防/ 2024年09月11日 20:57/ 0 赞/ 16 阅读
相关 Java反射机制理解误区 在理解和使用Java反射机制时,可能会有一些常见的误解。以下是几个主要的误区: 1. **反射是动态获取类信息**:这个理解是正确的。反射可以在运行时查看和修改类的信息。 小鱼儿/ 2024年09月10日 11:30/ 0 赞/ 22 阅读
相关 对java反射机制的一些理解 1.什么是java的反射机制? 说实话,一开始的时候我真的不知道什么是java的反射机制,反射机制又有什么用呢?甚至于在刚开始的时候,我还觉得java反射机制真的麻烦,还不如 柔情只为你懂/ 2022年09月25日 05:24/ 0 赞/ 152 阅读
相关 JAVA反射机制初步理解 Java中我们这样声明一个类,如人类 package cn.com.lcx.test; public class Person { 爱被打了一巴掌/ 2022年07月19日 01:19/ 0 赞/ 202 阅读
相关 深入理解java反射机制 (转自:[https://blog.csdn.net/u012585964/article/details/52011138][https_blog.csdn.net_u012 悠悠/ 2022年05月24日 10:08/ 0 赞/ 253 阅读
相关 java反射机制的一些总结 1.什么是反射机制? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的 小咪咪/ 2022年05月18日 09:48/ 0 赞/ 193 阅读
相关 对Java GC 机制的一些理解 写在前面 使用Java快一年时间了,从最早大学时候对Java的憎恶,到逐渐接受,到工作中体会到了Java开发的各种便捷与福利,这确实是一门不错的开发语言。不仅是 Intell 矫情吗;*/ 2022年04月27日 20:50/ 0 赞/ 173 阅读
相关 对java封装和java反射机制之间的关系的一些理解 java的封装,个人的简单理解就是将一个类的功能暴露给外部,但是将内部实现细节隐藏起来。换个说话就是类的外部只需要知道我给你提供了哪些功能即可,关于这些功能是是 ╰+攻爆jí腚メ/ 2022年01月28日 21:21/ 0 赞/ 235 阅读
还没有评论,来说两句吧...