gpt4 book ai didi

java - 我可以在 Java 中获取调用对象的实例吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:12 24 4
gpt4 key购买 nike

有一个库使用一些参数调用我的方法。我想收到另一个参数,但库没有将它提供给它调用的方法。

通过反编译库,我可以看到它有参数,并且它被分配给一个实例变量(不是私有(private)的,但也不是公共(public)的。)我知道如果我有实例,我可以使用反射获取变量,但我也没有实例。

有什么方法可以获取实例吗? SecurityManager has getClassContext() ,但这只是给了我实例的类——我想要实例本身。

作为我想要的快速示例:

public class A {
int b;
public A(int b, int c) {
this.b = b;
D(c);
}
}

public class D {
public D(int c) {
// Somehow I want to get at the calling instance of A's b from here,
// and A belongs to a library which I didn't write.
}
}

或者...我知道 b 被用作调用堆栈的参数。因此,如果有人知道我如何访问传递到 A 的构造函数中的 b,那将是可以接受的。

如果这些都不可行...我可以反编译 A 并按我想要的方式编译它,然后我要么需要做一些类加载魔法,要么我必须修改 jar 里的东西。这些听起来都不理想,所以我希望有人知道如何从调用堆栈访问 A 的实例或参数 b

最佳答案

在您提供的代码的帮助下,我可以考虑编写一个方面,我的意思是使用 aop 并尝试使用 joinpoint 来获取传递给构造函数 A() 的参数

关于java - 我可以在 Java 中获取调用对象的实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43072542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com