反射获取java对象的几种方式

 更新时间:2026年05月22日 09:01:08   作者:Mr.小海  
本文详细介绍了如何通过反射在Java中获取Class对象,使用不同构造器创建对象,以及Spring框架中的对象获取方法,包括构造器配置和setter注入,下面就来详细的介绍一下,感兴趣的可以了解一下

获取Class对象

  1. 已知全限定名
Class clazz = Class.forName("java.util.ArrayList");
  1. 已知类
Class clazz = String.class;
  1. 已有对象
String str = "Hello";
Class clazz = str.getClass();

已有Class对象

//1.创建对象
Class clazz = MyClass.class;  // 假设 MyClass 是一个类
MyClass obj = (MyClass) clazz.newInstance();  // 创建 MyClass 的实例

//2.调用成员变量
Class clazz = MyClass.class;
Field field = clazz.getDeclaredField("fieldName");  // 获取字段对象
field.setAccessible(true);  // 设置可访问私有字段
Object value = field.get(obj);  // 获取字段值
field.set(obj, newValue);  // 设置字段值
// 获取字段值
Object value = field.get(obj);
System.out.println("原始值:" + value);
// 修改字段值
field.set(obj, newValue);
System.out.println("修改后:" + field.get(obj));

//3.调用方法
Class clazz = MyClass.class;
Method method = clazz.getDeclaredMethod("methodName", argTypes);  // 获取方法对象
method.setAccessible(true);  // 设置可访问私有方法
Object result = method.invoke(obj, args);  // 调用方法并获取返回值

不同的构造器创建对象

Class clazz = MyClass.class;

// 获取无参构造函数,创建实例
MyClass obj1 = (MyClass) clazz.newInstance();

// 获取有参构造函数,创建实例
Constructor constructor = clazz.getDeclaredConstructor(String.class, int.class);
MyClass obj2 = (MyClass) constructor.newInstance("name", 18);

spring获取对象的方式

有以下类:

package com.xiaojiang.Spring;
 
public class Role {
     
    private int id;
    private String roleName;
    private String note;
     
    public Role(){}
     
    public Role(int id,String roleName, String note)
    {          
    	super();
        this.id = id;
        this.roleName = roleName;
        this.note = note;
    }     //setter,getter方法省略
 
}
<!--构造器配置-->
<bean id="Role" class="com.xiaojiang.Spring.Role">
        <constructor-arg value="1" type="int"></constructor-arg>
        <constructor-arg value="小江" type="java.lang.String"></constructor-arg>
        <constructor-arg value="有点丑" type="java.lang.String"></constructor-arg>
    </bean>
<!--配置setter注入-->
<bean id="Role" class="com.xiaojiang.Spring.Role">
        <property name="id" value="1"><property>
        <property name="roleName" value="小江"><property>
        <property name="note" value="测试"><property>
</bean>   

基于接口的注入:对象赋值,将value的赋值改成ref赋值

到此这篇关于反射获取java对象的几种方式的文章就介绍到这了,更多相关反射获取java对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java基于redis实现分布式锁代码实例

    Java基于redis实现分布式锁代码实例

    这篇文章主要介绍了Java基于redis实现分布式锁代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 详解Java中NullPointerException异常的原因和解决办法

    详解Java中NullPointerException异常的原因和解决办法

    本文主要介绍了详解Java中NullPointerException异常的原因和解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • java远程连接调用Rabbitmq的实例代码

    java远程连接调用Rabbitmq的实例代码

    本篇文章主要介绍了java远程连接调用Rabbitmq的实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Java安全之CC1利用链详解

    Java安全之CC1利用链详解

    这篇文章主要介绍了Java安全之CC1利用链的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Java常用命令汇总

    Java常用命令汇总

    这篇文章主要介绍了Java常用命令汇总,小编觉得挺不错的,这里给大家分享下,供需要的朋友参考。
    2017-10-10
  • 使用Spring自定义实现IOC和依赖注入(注解方式)

    使用Spring自定义实现IOC和依赖注入(注解方式)

    这篇文章主要介绍了使用Spring自定义实现IOC和依赖注入(注解方式),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • 说说@ModelAttribute在父类和子类中的执行顺序

    说说@ModelAttribute在父类和子类中的执行顺序

    这篇文章主要介绍了@ModelAttribute在父类和子类中的执行顺序,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Nacos源码之注册中心的实现详解

    Nacos源码之注册中心的实现详解

    这篇文章主要为大家介绍了Nacos源码之注册中心的实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • mybatis-plus 表名添加前缀的实现方法

    mybatis-plus 表名添加前缀的实现方法

    这篇文章主要介绍了mybatis-plus 表名添加前缀的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Java职责链模式的深入了解

    Java职责链模式的深入了解

    这篇文章主要为大家介绍了Java职责链模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01

最新评论