java反射编程,Java反射,Java反射详解

本文详细解读Java反射机制,包括Class、Constructor、Field和Method的使用,教你如何在运行时操作类和对象,实现通用编程和框架开发。从Class对象的创建、构造方法获取到成员变量的动态访问,全面揭示反射的强大功能。
摘要由CSDN通过智能技术生成

Java反射,Java反射详解

反射概述

反射的概述

什么是Java的反射机制

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。

Java的反射机制的作用

是用来编写一些通用性较高的代码或者框架的时候使用。

反射常用对象的概述

Class

Class类的实例表示正在运行的Java应用程序中的类和接口

Constructor

关于类的单个构造方法的信息以及对它的访问权限

Field

Field提供有关类或接口的单个字段的信息,以及对它的动态访问权限。

Method

Method提供关于类或接口上单独某个方法的信息。

5077396135965755841f527d3455066c.png

反射常用API

Class类的概述和使用

Java中java.lang.Class类用于表示一个类的字节码(.class)文件

如何得到某个class文件对应的Class对象

已知类和对象的情况下

类名.class

对象.getClass() ---- Object类提供

未知类和对象的情况下

Class.forName("包名.类名")

Class类代表某个类的字节码,并提供了加载字节码的方法:

forName("包名.类名"),forName方法用于加载类字节码到内存中,并封装成一个Class对象。

Constructor类的概述和使用

Constructor类的实例对象代表类的一个构造方法

得到某个类所有的构造方法

Constructor[] constructors = Class.forName("java.lang.String").getConstructors();

得到指定的构造方法并调用

Constructor constructor = Class.forName("java.lang.String").getConstructor(String.class);

String str = (String)constructor.newInstance("abc");

Class类的newInstance()方法用来调用类的默认构造方法

String obj = (String)Class.forName("java.lang.String").newInstance();

Field类的概述和使用

Field类代表某个类中的一个成员变量,并提供动态的访问权限

Field对象的获得

得到所有的成员变量

Field[] fields = c.getFields();//取得所有public属性(包括父类继承)

Field[] fields = c.getDeclaredFields();//取得所有声明的属性

得到指定的成员变量

Field name = c.getField("name");

Field name = c.getDeclaredField("name");

设置Field变量是否可以访问

field.setAccessible(boolean);

Field变量值的读取、设置

field.get(obj);

field.set(obj, value);

Method类的概述和使用

Method类代表某个类中的一个成员方法

Method对象的获得

获得所有方法

getDeclaredMethods()

getMethods()

获得指定的方法

getDeclaredMethod(String name, Class>... parameterTypes)

getMethod(String name, Class>... parameterTypes)

设置Method方法是否可以访问

method.setAccessible(boolean);

通过反射执行方法

invoke(Object obj, Object... args)

http://www.dengb.com/Javabc/1373635.htmlwww.dengb.comtruehttp://www.dengb.com/Javabc/1373635.htmlTechArticleJava反射,Java反射详解 反射概述 反射的概述 什么是Java的反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值