![]() |
1
10
这是可能的。我把它用于monkeypatch恶意的线程局部变量,它们阻止了webapps中的类卸载。您只需要使用反射来移除
像这样的方法可以做到:
周围也有一些缓存
|
![]() |
2
5
任何AOP框架都可以满足您的需求 它允许您为getInstance方法定义一个运行时重写,允许您返回任何适合您需要的类。 jmockit在内部使用asm框架来做同样的事情。 |
![]() |
3
1
您可以尝试以下操作。注意:它根本不是线程安全的,对于编译时已知的常量原语(因为它们是由编译器内联的)也不起作用。
|
![]() |
4
1
你应该能用JNI改变它…不确定这是否适合你。 编辑:这是可能的,但不是一个好主意。 http://java.sun.com/docs/books/jni/html/pitfalls.html
|
![]() |
5
1
如果你真的必须这样做(尽管对于我们的问题,我建议你使用CaptainaWesomePants的解决方案),你可以看看 JMockIt . 尽管这是为了在单元测试中使用,如果允许您重新定义任意方法的话。这是通过在运行时修改字节码来完成的。 |
![]() |
6
0
在回答这个问题之前,我承认这并不是你所说的关于修改私有静态最终字段的问题的答案。但是,在上面提到的特定示例代码中,我实际上可以这样做,以便您可以重写dosomething()。您可以利用getInstance()是一个公共方法和子类这一事实:
现在只需调用mysomeClass.getInstance()而不是someClass.getInstance(),就可以开始了。当然,只有当您是调用getInstance()的人,而不是您正在处理的不可修改内容的其他部分时,这才有效。 |
![]() |
7
0
具有 mockito 很简单:
此代码打印“有变化!”;您可以轻松地替换单例实例。我的0.02美分。 |
![]() |
8
-1
如果没有可用的外部黑客(至少我不知道),我就已经对类本身进行了黑客攻击。通过添加所需的安全检查来更改代码。因此,它是一个外部库,您不会定期进行更新,也不会发生太多的更新。无论什么时候发生这种情况,我都可以很高兴地重新做它,因为它无论如何都不是一个大任务。 |
![]() |
9
-1
这里,您的问题是好的旧依赖注入(也称为控制反转)。您的目标应该是注入
我猜你用的方式
相反,您应该首先创建实现相同接口或扩展的类
|
|
user29759326 · 如何返回递归函数中的最后一个值? 4 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 4 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 4 月前 |
![]() |
rudraraj · java中未声明最终变量 5 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 5 月前 |