Android反射机制实现与原理

一、反射的概念及在Java中的类反射

  反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。在计算机科学领域,反射是一类应用,它们能够自描述和自控制。这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。

ReflectionTest.java

bInt; ReflectionTest() { } abc(edf() { } @Override } }

二、反射机制中需要使用到的类

  我把需要使用的类列在下表中,,其中对我们特别有用的类,通过着重标记显示出来,并将在后面的使用中逐步解释:

三、Class类

  publicclassMyButtonextendsButton{…}

四、获取类的相关信息

1、获取构造方法

  由于Java语言是一种面向对象的语言,具有多态的性质,那么我们可以通过构造方法的参数列表的不同,来调用不同的构造方法去创建类的实例。同样,获取不同的构造方法的信息,也需要提供与之对应的参数类型信息;因此,就产生了以上四种不同的获取构造方法的方式。

get_Reflection_Constructors()

get_Reflection_Constructors(ReflectionTest r) {Class temp = r.getClass();String className = temp.getName();System.out.print(Modifier.toString(mod) + " " + className + "(");Class[] parameterTypes = theConstructors[i].getParameterTypes();(System.out.print(parameterTypes[j].getName());if (parameterTypes.length > j+1) {System.out.print(", ");}}System.out.println(")");}} catch (Exception e) {e.printStackTrace();} }

2、获取类的成员方法

  与获取构造方法的方式相同,存在四种获取成员方法的方式。

get_Reflection_Method()

get_Reflection_Method(ReflectionTest r) {Class temp = r.getClass();String className = temp.getName();Method[] methods = temp.getMethods();mod = methods[i].getModifiers();System.out.print(Modifier.toString(mod) + " ");System.out.print(methods[i].getReturnType().getName()); System.out.print(" " + methods[i].getName() + "(");Class[] parameterTypes = methods[i].getParameterTypes();for (int j = 0; j < parameterTypes.length; j++) {System.out.print(parameterTypes[j].getName());if (parameterTypes.length > j+1) {System.out.print(", ");}}System.out.println(")");} }

    getDeclaredMethods():用于获取在当前类中定义的所有的成员方法和实现的接口方法,不包括从父类继承的方法。

  大家可以查考一下开发文档的解释:

getDeclaredMethods()-ReturnsaMethodobjectwhichrepresentsthemethodmatchingthespecifiednameandparametertypesthatisdeclaredbytheclassrepresentedbythisClass.

    

  通过这两个语句执行后的结果不同:

  a、Method[]methods=temp.getDeclaredMethods()执行后结果如下:

    

  b、Method[]methods=temp.getMethods()执行后,结果如下:

人生最大的错误是不断担心会犯错

Android反射机制实现与原理

相关文章:

你感兴趣的文章:

标签云: