zoukankan      html  css  js  c++  java
  • java reflect反射获取方法变量参数

    类的成员包含变量(Field),方法(Method),构造器(Constructor)

    类定义

    package Reflect;
    
    public class MyTest {
        public int a;
        public static int b;
        public static final int c = 0;
        private int d;
    
        public int sum(int a, int b, String c) {
            return a + b;
        }
    
        public int sub(int a, int b, String c) {
            return a - b;
        }
    
        MyTest() {
    
        }
    
        MyTest(int a, int b) {
    
        }
    }

    1.获取变量

    package Reflect;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;
    
    public class Test {
        public static void main(String[] args) {
            System.out.println(MyTest.class);
            final Class<?> clazz = MyTest.class;
            System.out.println(clazz.getClass());
            final Field[] fields = clazz.getDeclaredFields();
    
            System.out.println("====print fields===");
            for (final Field f : fields) {
                System.out.print(f.getName() + "->");
                System.out.print(f.getModifiers() + "->");
                System.out.println(Modifier.toString(f.getModifiers()));
            }
    
    
    }
    输出:
    class Reflect.MyTest
    class java.lang.Class
    ====print fields===
    a->1->public
    b->9->public static
    c->25->public static final
    d->2->private


    2.获取方法

    package Reflect;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;
    
    
    public class Test {
        public static void main(String[] args) {
            System.out.println(MyTest.class);
            final Class<?> clazz = MyTest.class;
            System.out.println(clazz.getClass());
            final Field[] fields = clazz.getDeclaredFields();
    
            System.out.println("====print Method===");
            final Method[] ms = clazz.getMethods();
            for (final Method m : ms) {
                System.out.println();
                System.out.print(m.getName() + "==||");
                System.out.print(m.getReturnType().getName() + "==||");
                for (final Class o : m.getParameterTypes()) {
                    System.out.print(",==" + o.getName());
                }
            }
        
        }
    }
    输出:
    ====print Method===
    sum==||int==||,==int,==int,==java.lang.String
    sub==||int==||,==int,==int,==java.lang.String
    wait==||void==||
    wait==||void==||,==long,==int
    wait==||void==||,==long
    hashCode==||int==||
    getClass==||java.lang.Class==||
    equals==||boolean==||,==java.lang.Object
    toString==||java.lang.String==||
    notify==||void==||
    notifyAll==||void==||

    3.获取构造器

    package Reflect;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.lang.reflect.Modifier;
    
    
    public class Test {
        public static void main(String[] args) {
            System.out.println(MyTest.class);
            final Class<?> clazz = MyTest.class;
            System.out.println(clazz.getClass());
    
            System.out.println();
            System.out.println("====print Constructor===");
            final Constructor[] cs = clazz.getDeclaredConstructors();
            for (final Constructor c : cs) {
                System.out.println();
                System.out.print(c.getName());
                for (final Class o : c.getParameterTypes()) {
                    System.out.print(",==" + o.getName());
                }
            }
    
        }
    }

    输出:
    ====print Constructor===
    Reflect.MyTest
    Reflect.MyTest,==int,==int
    
    
  • 相关阅读:
    使用GUI工具Portainer.io管控Docker容器
    Pycharm-汉化的方法
    Python-Socketserver实现FTP,文件上传、下载
    Pycharm下载安装,本人亲测100% 破解
    Python-反射机制
    Python-操作XML文件
    Python-时间戳、元组时间的格式、自定义时间格式之间的转换
    Python-String字符串操作
    Python-生成器实现简单的"生产者消费者"模型
    Python- 装饰器
  • 原文地址:https://www.cnblogs.com/pu20065226/p/10078462.html
Copyright © 2011-2022 走看看