调用使用Java反射的单例类的方法 [英] Invoke a method in Singleton class using reflection in java

查看:265
本文介绍了调用使用Java反射的单例类的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有下面的类:

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应用程序,我想在现有的使用方法(假设这将是present所有的时间)应用程序,它是在手机中。

using reflection in java, how can i invoke the methodA(). Basically I am writing an Android Application, i want to use method in already existing(assume it will be present all the time) application which is in the phone.

下面是我尝试过的事情:

Below are the things I have tried:

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 });

但它仍然没有工作。

But its still not working.

推荐答案

我发现下面

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

这篇关于调用使用Java反射的单例类的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆