使用java中的反射在Singleton类中调用方法

时间:2013-04-25 12:25:13

标签: java android reflection singleton

我有以下课程:

Public class ABCinfo { 
    private static ABCinfo instance = null;
    Public static ABCinfo getInstance(Param param); // get instance
    Private ABCinfo(Param); // making a Singleton class
    Public void methodA(Param1 param1); // need to invoke this method
}

在java中使用反射,我如何调用methodA()。 基本上我正在写一个Android应用程序,我想使用现有的方法(假设它将一直存在)在手机中。

以下是我尝试的内容:

String apkName = activity.getPackageManager().getApplicationInfo(packageName, 0).sourceDir;

PathClassLoader myPathClassLoader =
    new dalvik.system.PathClassLoader(
    apkName,
    ClassLoader.getSystemClassLoader());

Class<?> handler = Class.forName(className, true, myPathClassLoader);
Method m0 = handler.getDeclaredMethod("getInstance", new Class[] { Param.class  });
m0.setAccessible(true);
Object b = m0.invoke(null, new Object[]{ Param});
Method m = handler.getMethod("methodA", new Class[] { Param1.class});
Param1 methodParameter = "asdf";
Object b1 = m.invoke(b, new Object[] { methodParameter });

但它仍无效。

1 个答案:

答案 0 :(得分:-1)

我在下面找到了解决方案等等

Object b1 = m.invoke(handler.newInstance(), new Object[] { methodParameter });