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对象来获取类的属性,方法等信息,即将类解剖,分成一个个对象。 

  • 相关阅读:
    Python error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat)解决方案
    3-Longest Substring Without Repeating Characters @LeetCode
    2-Add Two Numbers @LeetCode
    1-Two Sum @LeetCode
    DES原理及代码实现
    Linux网络篇,ssh原理及应用
    虚拟机如何通过“仅主机”模式上网
    MySQL入门,第八部分,多表查询(二)
    MySQL入门,第八部分,多表查询(一)
    MySQL入门,第七部分,单表查询
  • 原文地址:https://www.cnblogs.com/yanze/p/9717658.html
Copyright © 2011-2022 走看看