|
(代码流)java映射
发表于 2014-10-21 18:03:36
浏览:16467
|
回复:3
打印
只看该作者
[复制链接]
楼主
java是一种解析语言,java程序是通过java虚拟机解析.class的方式运行起来。因此,java中就存在java映射的概念。
下面介绍如何用java映射创建java对象和调用java对象的方法。
一、首先我们要知道这个java的包名和类名。调用静态方法Class.forName(String)获取Class对象。
二、然后我们要知道要调用的方法的声明。调用Class对象的getMethod获取Method对象。
三、传入参数调用Method对象。这时要调用Method对象的invoke方法。
好,现在上代码:lol
- package com.bunchen.test;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Method;
- public class Test {
- public int func(int a , int b){
- return a+b;
- }
- /**
- * @hide
- */
- public int func(int a){
- return a*a;
- }
- public static void main(String[] args) {
- try {
- Class cls = Class.forName("com.bunchen.test.Test");
-
- Constructor[] cs = cls.getConstructors();
- System.out.println("###### constructors ######");
- for(Constructor c : cs){
- System.out.println(c.toString());
- }
- System.out.println("##########################");
-
- Method[] mtds = cls.getMethods();
- System.out.println("###### methods ######");
- for(Method m : mtds){
- System.out.println(m.toString());
- }
- System.out.println("#####################");
-
- Method m1 = cls.getMethod("func", int.class,int.class);
- Method m2 = cls.getMethod("func",int.class);
-
- Object obj = cls.getConstructor().newInstance();
-
- int a = 3 ;
- int b = 5 ;
-
- int r1 = (Integer) m1.invoke(obj, a,b);
-
- int r2 = (Integer) m2.invoke(obj, b);
-
- System.out.println("r1="+r1);
- System.out.println("r2="+r2);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
复制代码
运行结果:
最后的最后,用这种方法我们就可以调用android隐藏了的api的方法了。:lol
|
|