当前位置:首页 > java > 正文内容

java invoke 的反射用法 及参数传递

root5年前 (2021-11-20)java1780
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class test {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
        System.out.println("Hello World!");
        Class<User> clas = User.class;
        Method m = clas.getMethod("method", String.class);
        m.invoke(null, "aa");//静态方法可省略对象,直接用null替代,或用clas

        m = clas.getDeclaredMethod("method", int.class);//非public方法要用declared获取
        m.setAccessible(true);//非public方法需要设置为可访问
        m.invoke(clas.newInstance(), 1);//非静态方法需要提供底层的类对象
    }
}

class User {
    public static void method(String s) {
        System.out.println(s);
    }

    private void method(int i) {
        System.out.println(i);
    }
}

不同元类的方式

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class test {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
        System.out.println("Hello World!");
        User us = new User();
        Method m = us.getClass().getMethod("method", String.class);
        m.invoke(us, "aa");//静态方法可省略对象,直接用null替代,或用clas
        m = us.getClass().getDeclaredMethod("method", int.class);
        m.setAccessible(true);//非public方法需要设置为可访问
        m.invoke(us, 1);//非静态方法需要提供底层的类对象

    }
}

class User {
    public static void method(String s) {
        System.out.println(s);
    }

    private void method(int i) {
        System.out.println(i);
    }
}



扫描二维码推送至手机访问。

版权声明:本文由一叶知秋发布,如需转载请注明出处。

本文链接:https://zhiqiu.top/?id=175

分享给朋友:

相关文章

pom.xml文件的标签含义

<?xml version="1.0" encoding="UTF-8"?>声明xml的版本<project xmlns="http://maven.apache.org/...

java 通过-jar 启动时的参数生效问题

java   -Djava.security.egd=file:/dev/./urandom --spring.profiles.active=dev --spring.cloud.nacos.discovery.ser...

maven的简单使用

maven是什么?Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven增加可重用性并负责建立相关的任务。简单的说就是用来引入包的maven的目标:项目是可重复使用,易维护,更容易理解的一个综合...

java @Bean 注解

Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中。SpringIO...

java 处理json 字符串

假设有一个实体类public class User{   private int id;   private String name;&...

java springboot @ApiModelProperty用法

@ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改 value–字段说明 name–重写属性名字 dataType–重写属性类型 required–是否...