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
    
    
  • 相关阅读:
    warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 192a7d7d: NOKEY
    warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
    535 5.7.8 Error: authentication failed: generic failure安装EMOS时SMTP测试报错
    mysql-libs版本冲突卸载不了
    history
    CentOS 7 / RHEL 7 运行单用户模式进行root的密码重置
    chkconfig
    Linux主机名域名修改问题
    Mysql正常启动之后默认使用的文件
    解决mysql“Access denied for user 'root'@'localhost'”
  • 原文地址:https://www.cnblogs.com/pu20065226/p/10078462.html
Copyright © 2011-2022 走看看