美文网首页
JAVA反射调用方法

JAVA反射调用方法

作者: 壹元伍角叁分 | 来源:发表于2021-08-09 08:56 被阅读0次

用户类:

public class UserEntity {
    private static final String TAG = UserEntity.class.getSimpleName();

    private final int money = 1;

    //无参方法
    public int method1() {
        Log.d(TAG, "method1: 无参");
        return money;
    }

    //单个参数
    public void method2(int a) {
        Log.d(TAG, "method1: 单个参数");
    }

    //多个参数
    public void method3(String a, int b) {
        Log.d(TAG, "method1: 多个参数");
    }
}

测试类:

/**
 * 反射调用方法获取返回值
 */
public class Reflection {

    public static void main(String[] args) throws Exception {
        //获取Class对象
        //1、通过类的.class属性获取
        Class<UserEntity> userClass = UserEntity.class;
        //2、通过类的完整路径获取,这个方法由于不能确定传入的路径是否正确,这个方法会抛ClassNotFoundException
        Class<?> userClass1 = Class.forName("com.lf.entity.UserEntity");
        //3、通过new一个实例,然后通过实例的getClass()方法获取
        UserEntity s = new UserEntity();
        Class<? extends UserEntity> userClass2 = s.getClass();

        UserEntity userEntity = (UserEntity) userClass.newInstance();

        //第一种方法
        int i = userEntity.method1();

        //第二种方法,(无参的示例),获取类中方法名为method1的方法,getMethod第一个参数为方法名,第二个参数为方法的参数类型数组
        Method classMethod1 = userClass.getMethod("method1");
        Object object = classMethod1.invoke(userEntity);
        //如果方法method1是私有的private方法,按照上面的方法去调用则会产生异常NoSuchMethodException,这时必须改变其访问属性
        //method.setAccessible(true);//私有的方法通过发射可以修改其访问权限

        //第二种方法,(单个参数的示例)
        Method classMethod2 = userClass.getMethod("method2", int.class);
        classMethod2.invoke(userEntity, 100);

        //第二种方法,(多个参数的示例)
        Method classMethod3 = userClass.getMethod("method3", String.class, int.class);
        classMethod3.invoke(userEntity, "张三", 200);
    }
}

相关文章

  • Java 反射

    Java反射Java反射API获取Class对象通过反射创建实例对象,调用公共方法通过反射调用私有方法 一.Jav...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • Java动态代理

    java动态代理 先看Method反射,调用getDeclaredMethod查找方法;invoke执行方法,返回...

  • 【Java 进阶】Java 反射

    反射:获取Class中所有字段(Field)与方法(Method),并实现调用(invoke) Java 反射简单...

  • java 方法反射调用

    package cn.mldn.demo; import java.lang.reflect.Method;cla...

  • JAVA反射调用方法

    用户类: 测试类:

  • JVM的反射调用实现

    如何执行反射调用 Java的反射调用是通过java.lang.reflect.Method的invoke调用执行,...

  • 关于java及Spring环境下反射的使用举例:

    一:java中反射调用举例: 1,写一个类,作为后面被反射调用的类及对方法。类名:TcpProcessServic...

  • java反射机制

    java反射机制是为了动态获取类的结构,动态地调用对象的方法 java反射机制 获取类Class对象 A.clas...

  • java反射和动态代理

    java反射 反射是程序运行时,通过反射直接操作对象或者类。获取类声明的属性和方法,调用方法或者构造对象,设置修改...

网友评论

      本文标题:JAVA反射调用方法

      本文链接:https://www.haomeiwen.com/subject/yjaavltx.html