method反射机制

来源:互联网 发布:建行信用卡 知乎 编辑:程序博客网 时间:2024/06/01 11:42

首先介绍反射机制

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

        Reflection。这个字的意思是“反射、映象、倒影”,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。

        Class object 诞生管道

1)运用getClass()
注:每个class 都有此函数
String str = "abc";
Class c1 = str.getClass();
2)运用Class.getSuperclass()
Button b = new Button();
Class c1 = b.getClass();
Class c2 = c1.getSuperclass();
3)运用static method------Class.forName()(最常被使用)
Class c1 = Class.forName ("java.lang.String");
Class c2 = Class.forName ("java.awt.Button");
Class c3 = Class.forName ("java.util.LinkedList$Entry");
Class c4 = Class.forName ("I");
Class c5 = Class.forName (".class");
4)运用primitive wrapper classes的TYPE 语法
Class c1 = Boolean.TYPE;
Class c2 = Byte.TYPE;
Class c3 = Character.TYPE;
Class c4 = Short.TYPE;
Class c5 = Integer.TYPE;
Class c6 = Long.TYPE;
Class c7 = Float.TYPE;
Class c8 = Double.TYPE;
Class c9 = Void.TYPE;
method 方法:

public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception {  

    Class ownerClass = owner.getClass();   

    Class[] argsClass = new Class[args.length];

   for (int i = 0, j = args.length; i < j; i++) 

   { 

      argsClass[i] = args[i].getClass();   

   }   

   Method method = ownerClass.getMethod(methodName,argsClass);   

   return method.invoke(owner, args); 

}  



0 0