zoukankan      html  css  js  c++  java
  • 获得类的运行时结构

    获得类的运行时结构

    代码如下

    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    //获得类的信息
    public class Test08 {
        public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {
            Class c1 = Class.forName("com.lu.reflection.User");
    
    //        User user = new User();
    //        c1 = user.getClass();
    
            //获得类的名字
            System.out.println(c1.getName());  //获得包名 + 类名
            System.out.println(c1.getSimpleName()); //获得类名
    
            //获得类的属性
            System.out.println("=====================");
            Field[] fields = c1.getFields();  //只能找到public
    
          fields = c1.getDeclaredFields(); //找到全部的属性
            for (Field field : fields) {
                System.out.println(field);
            }
    
          //获得指定属性的值
            Field name = c1.getDeclaredField("name");
            System.out.println(name);
    
    
            //获得类的方法
            System.out.println("=====================");
            Method[] methods = c1.getMethods(); //获得本类及其父类的全部public方法
            for (Method method : methods) {
                System.out.println("正常的:"+method);
            }
            methods = c1.getDeclaredMethods();  //获得本类的所有方法
            for (Method method : methods) {
                System.out.println("getDeclaredMethods:"+method);
            }
    
            //获得指定方法
            //重载,所以需要参数
            System.out.println("=====================");
            Method getName = c1.getMethod("getName", null);
            Method setName = c1.getMethod("setName", String.class);
            System.out.println(getName);
            System.out.println(setName);
    
            //获得指定的构造器
            System.out.println("=====================");
            Constructor[] constructors = c1.getConstructors(); //获得public方法
            for (Constructor constructor : constructors) {
                System.out.println(constructor);
            }
            constructors = c1.getDeclaredConstructors();    //获得本类的全部方法
            for (Constructor constructor : constructors) {
                System.out.println("#"+constructor);
            }
    
            //获得指定的构造器
            Constructor declaredConstructor = c1.getDeclaredConstructor(String.class, int.class, int.class);
            System.out.println("指定:"+declaredConstructor);
        }
    }
    
  • 相关阅读:
    c#redis使用
    不安全的HTTP方法(渗透实验)
    arguments.callee弃用与webuploader
    多线程系列1:经典卖票
    终于确定了系统lsass.exe占用cpu的根本原因了,速度来看一看!![转载]
    edit响应键盘的“咚咚”声音去掉
    delphi资源文件制作及使用详解
    MySQL server has gone away错误的解决办法
    MySQL server has gone away的解决方法
    MySQL
  • 原文地址:https://www.cnblogs.com/helloxiaolu/p/13330519.html
Copyright © 2011-2022 走看看