• java反射机制出浅读


    定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。(在运行状态中,能够知道任意类的属性和方法,同时能够调用任意类的属性和方法)

    作用:
      在运行时判断任意一个对象所属的类;
      在运行时构造任意一个类的对象;
      在运行时判断任意一个类所具有的成员变量和方法;
      在运行时调用任意一个对象的方法;
      生成动态代理。

    方法:

     

    一:得到一个对象的完整包名和类名
    调用Class的getName()
    例:
    TestClass c = new TestClass() ;
    System.out.println("-----------"+c.getClass().getName());
    二:实例化Class:
    1.运用getClass(),每个类都有getClass()
    Class c3 = new TestClass().getClass() ;
    2.类.class
    Class c1 = TestClass.class ;
    3.Class.forName("全路径类名")
    Class c2 = Class.forName("cn.com.prac.test.TestClass") ;
    三:获取一个对象的父类与实现接口
    父类:Class对象.getSuperClass().getName()
    实现接口:Class.getSuperClass().getInterfaces()
    四:为某个类的属性或构造方法赋值
    Class.newInstance():得到某个Class具体的对象实例
    Class.getConstructors():得到某个Class的所有构造方法
    Class c = Class.forName("cn.com.prac.pojo.Student") ;
    Student s = (Student) c.newInstance() ;
    s.setAddress("重庆");
    s.setAge(20);
    s.setId("5");
    s.setName("李四");
    //得到所有构造方法
    Constructor[] con = c.getConstructors() ;
    Student s1 = (Student)con[0].newInstance() ;
    Student s2 = (Student)con[1].newInstance("6",10,"张三","重庆") ;

    System.out.println("----------"+s2.getAddress()+"---"+s2.getId()+"----"+s2.getName()+"---"+s2.getAge());
    五:得到某个对象的所有属性
    Class c = Class.forName("cn.com.prac.pojo.Student") ;
    Field[] fs = c.getDeclaredFields() ;
    for (Field field : fs) {
    System.out.println("---------"+field.getName()+"---"+field.getType().getName());
    }
    六:得到某个对象的所有方法
    Class.getMethods() ;

    使用场景:如:工厂方法

      

  • 相关阅读:
    多线程批量插入数据到数据库
    分分钟搞定redis
    Eclipse中JS文件红叉处理
    springmvc基础篇—处理图片静态资源文件
    springmvc基础篇—使用注解方式为前台提供数据
    springmvc基础篇—拆分配置文件
    springmvc基础篇—通过注解的方式去配置项目
    springmvc基础篇—修改默认的配置文件名称及位置
    springmvc基础篇—掌握三种控制器
    springmvc基础篇—掌握三种处理器
  • 原文地址:https://www.cnblogs.com/-scl/p/7498085.html
Copyright © 2020-2023  润新知