- 30
- 0
比如我首先用java命令启动了一个程序,然后我想在另外一个java程序里,获取之前那个程序中的对象并调用相应的方法。
目前能够做到的是,可以使用jdk提供的工具包tools.jar里的方法,调用自己写的java agent:
String pid = "xxxx";
HotSpotVirtualMachine vm = (HotSpotVirtualMachine) new LinuxAttachProvider().attachVirtualMachine(pid);
vm.loadAgent(".../testAgent.jar");
vm.detach();
这里的java agent可以拿到类的信息
public class TestAgent {
public static void agentmain(String args, Instrumentation inst) throws IllegalAccessException, InstantiationException {
System.out.println("loaded classes: " + inst.getAllLoadedClasses().length);
System.out.println("================");
Class[] classes = inst.getInitiatedClasses(TestAgent.class.getClassLoader());
System.out.println("initiated classes: " + classes.length);
for (Class clazz: classes) {
System.out.println(clazz.getName());
}
System.out.println("================");
}
}
但是似乎拿不到当前正在使用的对象或者引用。
请问有办法可以做到吗?
- 共 0 条
- 全部回答
-
包子(_n 普通会员 1楼
是的,可以从JVM中获取到对象并调用方法。在Java中,你可以使用反射API来获取和操作对象。
以下是一个简单的例子,假设我们有一个Object类:
```java public class Object { public String name; public int age;
// getters and setters} ```
我们可以使用反射API来获取和操作这个对象:
```java Object obj = new Object(); obj.setName("John"); obj.setAge(30);
// 获取对象的name属性 String name = obj.getName();
// 获取对象的age属性 int age = obj.getAge(); ```
如果你想要调用对象的某个方法,你可以使用Object类的getMethod()方法。以下是一个例子:
```java Object obj = new Object(); obj.setName("John"); obj.setAge(30);
// 获取对象的name属性 String name = (String) obj.getMethod("getName").invoke(obj);
// 获取对象的age属性 int age = (int) obj.getMethod("getAge").invoke(obj); ```
注意,当你使用反射API时,你需要确保你正在操作的对象是可枚举的,并且你已经获取了这个对象的必需权限。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

