反射获取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 stringbuffer的用法示例

    java stringbuffer的用法示例

    这篇文章主要介绍了java stringbuffer的用法示例,字符串缓冲区,是一个容器(当返回到的是String时而且长度不确定,数据类型不确定时就可以用StringBuffer)其实底层还是数组,只是被封装了,对外提供了方法,初始容量为16个字符
    2014-01-01
  • 使用mybatis的@Interceptor实现拦截sql的方法详解

    使用mybatis的@Interceptor实现拦截sql的方法详解

    拦截器是一种基于 AOP(面向切面编程)的技术,它可以在目标对象的方法执行前后插入自定义的逻辑,本文给大家介绍了使用mybatis的@Interceptor实现拦截sql的方法,需要的朋友可以参考下
    2024-03-03
  • 详解Spring Cloud Zuul 服务网关

    详解Spring Cloud Zuul 服务网关

    本篇文章主要介绍了详解Spring Cloud Zuul 服务网关,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 解决反射调用方法时获取bean失败的问题

    解决反射调用方法时获取bean失败的问题

    文章描述了通过反射机制调用类方法时遇到的@Autowired注入失败和事务回滚失败的问题,原因是反射生成的对象未被SpringIOC容器管理,解决方案是通过applicationContext.getBean("className")方法获取Spring管理的bean来解决注入和事务问题
    2025-10-10
  • Elasticsearch常用DSL语法巧记

    Elasticsearch常用DSL语法巧记

    这篇文章主要为大家介绍了Elasticsearch常用DSL语法巧记,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • SSM框架把日志信息保存到数据库过程详解

    SSM框架把日志信息保存到数据库过程详解

    这篇文章主要介绍了SSM框架把日志信息保存到数据库过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • JUC循环屏障CyclicBarrier与CountDownLatch区别详解

    JUC循环屏障CyclicBarrier与CountDownLatch区别详解

    这篇文章主要为大家介绍了JUC循环屏障CyclicBarrier与CountDownLatch区别详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • JVM内存分配及String常用方法解析

    JVM内存分配及String常用方法解析

    这篇文章主要介绍了JVM内存分配及String常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • SpringBoot限制接口访问频率功能实现

    SpringBoot限制接口访问频率功能实现

    最近在基于SpringBoot做一个面向普通用户的系统,为了保证系统的稳定性,防止被恶意攻击,我想控制用户访问每个接口的频率,接下来通过本文给大家介绍SpringBoot限制接口访问频率功能实现,需要的朋友可以参考下
    2023-05-05
  • 基于java构造方法Vector删除元素源码分析

    基于java构造方法Vector删除元素源码分析

    这篇文章主要介绍了基于java构造方法中对Vector删除元素的源码分析,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家早日升职加薪
    2021-09-09

最新评论