栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

通过反射执行任意类的任意方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过反射执行任意类的任意方法

通过反射执行任意类的任意方法

Java的反射机制:在程序运行的时候可以调用
Class aClass = Class.forName(className);
Object obj = aClass.newInstance();等反射的API获取任何类的内部信息(字段、方法等),并且能操作这些内部信息
我们在调用Class.forName(className)的时候,会在堆中加载一个Class类型的对象,这个对象就是传入的className,也就是说我们可以通过这个Class类型的对象操作className的方法、属性等。

1、项目结构

2、用来演示的两个类
package com.zhou.reflect.pet;


public class Cat {

    public void sound(){
        System.out.println("喵喵喵...");
    }
}

package com.zhou.reflect.pet;



public class Dog {
    public void sound(){
        System.out.println("汪汪汪...");
    }
}

3、properties
# 这里配置需要调用的类路径
className=com.zhou.reflect.pet.Cat
# 需要调用的方法
methodName=sound


4、主要实现
package com.zhou.reflect;

import org.apache.logging.log4j.util.PropertiesUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;

import java.lang.reflect.Method;
import java.util.Properties;


public class ReflectFactory {


    public static void main(String[] args) {
        
        try {
            //1、得到resource目录下的properties
            ClassPathResource classPathResource = new ClassPathResource("/application.properties");
            Properties properties = PropertiesLoaderUtils.loadProperties(classPathResource);
            //2、获取配置文件的内容
            String className = properties.getProperty("className");
            String methodName = properties.getProperty("methodName");
            //3、得到类的对象
            Class  aClass = Class.forName(className);
            //4、初始化这个对象
            Object obj = aClass.newInstance();
            //5、得到类的方法
            Method method = aClass.getMethod(methodName);
            //6、执行这个方法
            method.invoke(obj);
        } catch (Exception ex) {
            System.out.println(ex);
        }
    }
}

5、执行结果

配置文件中配置的调用Cat的sound方法,输出结果是“喵喵喵…”

配置文件中配置的调用dog的sound方法,输出结果是“汪汪汪…”

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/930194.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号