zoukankan      html  css  js  c++  java
  • java 反射基本认识

    java 反射基本认识

    最近重新复习java反射的知识,有了新的理解。

    class类?

    在面向对象中,万事万物皆对象。类也是个对象,是java.lang.class类的实例对象。

    public class ClassDemol {
     public static void main(String arg[]){
         //创建了Person 类的实例对象
         // 如何创建Person 类的类对象
         Person person = new pserson();
         //有三种方法表示
         //第一种
         Class c1 = Person.class;
         //第二种
          Class c2 = person.getClass();
          // 第三种
          Class.fromName("java.xx.xx");
     }
    }
    
    class Person{}
    

    java 静态加载类和动态加载类

    • 在编译时期,会加载需要使用所有的类,成为静态加载类。比如 new 创建对象,那么该类在编译时期,就需要加载。
    • 在运行时期,会加载需要使用所有的类,成为动态加载类。比如 class 类对象的NewInstance()方法创建某个类的对象,再运行时期,需要加载。

    class类的方法

     // 获取类类型
     class c = obj.getClass();
     //获取类的名称
     c.getName();
     //获取类的自身public 方法以及继承的public 方法
     Method[] ms= c.getMethod();
     //获取类的自身public 方法以及继承的public 方法
     Method[] ms= c.getMethods();
     //获取类的自身所有方法
     Method[] ms= c.getDeclareMethods();
     //获取类的某个方法返回类型的类型
     Class returntype =  ms[i].getReturnType();
     //获取类的某个方法参数类型的类型
     Class paramtype =  ms[i].getParamType();
    

    方法反射

    //获取相应的方法类类型
    Method m = c.getMethod("printf",int.class,int.class);
    //方法调用,可以调到相应的方法
    m.invoke(c,19,19);

  • 相关阅读:
    手把手教你接入微信支付
    Java中的深浅拷贝问题,你清楚吗?
    DeimosC2 源码阅读
    一行命令删除空的docker images
    docker build出现交互式时区设置解决
    Amass项目源码阅读(整体架构)
    Prometheus时序数据库-磁盘中的存储结构
    Prometheus时序数据库-内存中的存储结构
    解Bug之路-ZooKeeper集群拒绝服务
    日常Bug排查-Nginx重复请求?
  • 原文地址:https://www.cnblogs.com/Lollipop_Hsu/p/11471219.html
Copyright © 2011-2022 走看看