zoukankan      html  css  js  c++  java
  • 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() ;

    使用场景:如:工厂方法

      

  • 相关阅读:
    模拟信号的优缺点分析
    PLC控制网关的功能介绍及应用领域
    LoRa无线数传终端的优势
    串口服务器厂家哪家好
    串口转以太网转换器的工作模式
    一个能手机控制水泵的无线远程开关控制器
    以太网IO模块是什么
    支持MQTT的模块有哪些
    常用正交表
    Spring Boot源码(五)以HttpEncodingAutoConfiguration【Http 编码自动配置】为例解释自动配置原理
  • 原文地址:https://www.cnblogs.com/-scl/p/7498085.html
Copyright © 2011-2022 走看看