Java中反射的使用

无参构造器 + 方法的调用

bash 复制代码
package com.studio;

import java.lang.reflect.Method;

class User {
    private String name;
    /*无参构造器*/
    public User() {
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "User [name=" + name + "]";
    }
}

public class ReflectTest {
    public static void main(String[] args) throws Exception {
        // 加载类字节码
        Class<?> clazz = ReflectTest.class.getClassLoader().loadClass("com.studio.User");
        // 使用默认构造器创建对象
        Object instance = clazz.getConstructor().newInstance();
        // 获取方法(方法名+参数类型)
        Class<?> paramTypes[] = new Class[1];
        paramTypes[0] = Class.forName("java.lang.String");
        Method method = instance.getClass().getMethod("setName", paramTypes);
        // 调用方法(this+参数)
        Object paramValues[] = new Object[1];
        paramValues[0] = "小明";
        method.invoke(instance, paramValues);
        System.out.println(instance);
    }
}
相关推荐
小猪皮蛋粥15 小时前
python画图
开发语言·python
Felven15 小时前
A. The 67th Integer Problem
开发语言
zopple15 小时前
Laravel7.x核心特性全解析
开发语言·php·laravel
wjs202415 小时前
MVC 应用程序
开发语言
studyForMokey15 小时前
【Android面试】Java专题 todo
android·java·面试
lly20240615 小时前
ionic 模态窗口:全面解析与最佳实践
开发语言
小白学大数据15 小时前
解决 Python 爬虫被限制:延迟抓取指令深度解析
开发语言·c++·爬虫·python
一只大袋鼠15 小时前
MyBatis 特性(三):缓存、延迟加载、注解开发
java·数据库·笔记·sql·缓存·mybatis
qq_120840937115 小时前
Three.js 工程向:EffectComposer 后处理链路与色彩管理
开发语言·前端·javascript
老毛肚15 小时前
Redis高级
java·数据库·redis