zoukankan      html  css  js  c++  java
  • 类类型与反射

    首先,确认一条准则,java中万物皆为对象,我们创建的每个类也不例外,所有类都是Class类(全称java.lang.class)的实例对象,但它们不用new创建,因为Class类的构造方法是私有的。

    好的,现在开始咬文嚼字。

    每个类都有一个类类型(很拗口是不是。。理解为类的class,即类类型)即class属性,这个属性包含此类的重要信息,例如方法、属性等

    如何获取类类型?

    1. Class c1= A.class

    2. Class c2= a1.getClass() //a1是A的实例

    3. Class c3= Class.forName("类的全称")

    备注: 类类型是一个类,也是一个对象

    如何构建类类型获取该类实例?

    A a2= (A)c1.newInstance()

    即先创建一个类类型实例,再进行一次强制性类型转换

    类类型的常用操作

    publicstaticvoid printClassMessage(Object obj){
      Class c = obj.getClass();
      //获取类的名称
      System.out.println("累的名称是:"+c.getName());
    
      //一个成员方法就是一个Method对象
      //getMethods()方法获取的是所有的public的函数,包括父类继承而来的
      //getDeclaredMethods()获取的是多有该类自己声明的方法,不问访问权限
      Method[] ms = c.getMethods();
      for(int i =0; i < ms.length; i++){
        //得到方法的返回值类型的类类型
        Class retrunType = ms[i].getReturnType();
        System.out.print(retrunType.getName()+" ");
        //得到方法的名称
        System.out.print(ms[i].getName()+"(");
        
    //获取的参数类型--->得到的是参数列表的类型的类类型     Class[] paraTypes = ms[i].getParameterTypes();     for(Class class1 : paraTypes){       System.out.print(class1.getName()+",");     }     System.out.println(")");   } }

    接下来说一下什么是反射

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

    而反射的本质,就是通过Class对象来获取类的属性,方法等信息,即将类解剖,分成一个个对象。 

  • 相关阅读:
    数字图像处理领域算法之高斯平滑
    字符串数组元素反转
    安装visual studio 2008 team 失败
    .NET中的正则表达式 (二)RegexOptions 枚举
    手动备份、还原windows7、office2010激活信息
    [转]蓝牙基带数据传输机理分析
    .NET中的正则表达式 (三)RegexCompilationInfo 类
    Android AVD语言设置
    蓝牙协议栈
    Bluetooth StructureBlueZ
  • 原文地址:https://www.cnblogs.com/yanze/p/9717658.html
Copyright © 2011-2022 走看看