小编A.D*_*HEL的帖子

如何在Java中加载修改后的超类?

  • 我的班级A延伸到B。
  • 我创建了一个CustomClassLoader,扩展了ClassLoader来使用defineClass(className, byte[], offset, length)
  • 我已经实例化了new CustomClassLoader(Thread.currentThread().getContextClassLoader())。因此,CustomClassLoader的父级是当前线程中的ClassLoader。
  • 我已经使用ASM框架修改了B类。我已经在.class文件中编写了修改后的类,并使用反编译器来确保它可以工作。而且有效。
  • 我已将修改后的B类添加到CustomClassLoader中
  • 我已经Thread.currentThread().setContextClassLoader()用CustomClassLoader 设置了。
  • 我使用过负载A Class.forName(String, true, the CustomClassLoader)
  • 但是加载的B类似乎是原始类。

我怎么了?如果您需要更多信息,请在我的GitHub上找到详细的主题。

java classloader superclass java-bytecode-asm

5
推荐指数
1
解决办法
304
查看次数

当吸气剂也是同步动作?

如果我有一个具有Map命名myMap和getter的类:

public Map getMap() {
    synchronized(myMap) {
        return myMap;
    }
}
Run Code Online (Sandbox Code Playgroud)

难道getMap().put(Something)也会被同步?

java getter synchronized

1
推荐指数
1
解决办法
33
查看次数