类类型与反射

首先,确认一条准则,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语言的反射机制。

通过类的类类型,我们得以做到上述要求

猜你喜欢

转载自www.cnblogs.com/yanze/p/9717658.html