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);
        }
    }
    
  • 相关阅读:
    Parameter Binding in ASP.NET Web API
    Which HTTP methods match up to which CRUD methods?
    ErrorHandling in asp.net web api
    HttpStatusCode
    Autofac Getting Started(默认的构造函数注入)
    Autofac Controlling Scope and Lifetime
    luvit 被忽视的lua 高性能框架(仿nodejs)
    undefined与null的区别
    VsCode中使用Emmet神器快速编写HTML代码
    字符串匹配---KMP算法
  • 原文地址:https://www.cnblogs.com/helloxiaolu/p/13330519.html
Copyright © 2011-2022 走看看