问题: 我需要在java.util.prefs.Preferences抽象类中添加一个方法,原因如下:
如何将方法添加到现有Java字节码?
答案 0 :(得分:2)
对于java.util.prefs.Preferences
,你运气不好。除非您更改放在the bootstrap class path上的类,否则无法检测此类。即使如此,请注意,这违反了JVM的用户许可协议,以便发布具有更改的引导类路径的安装。
通常,您可以使用Java代理在加载时更改类。这样,您可以添加方法。但是,JVM在内部使用Preferences
类,并且在加载代理之前加载。这样,代理就无法应用。
或者,Instrumentation
interface允许您在运行时更改已加载的类。然而,使用这种方法,添加方法是非法的,这也是为什么它不起作用的原因。
作为第三个选项,您可以考虑实现一个隐藏Preferences
类的子优先级类加载器,但不允许除引导类加载器之外的类加载器在{{1}中定义类包。因此,这也不起作用。
你想做什么:
java.*
委托给它保存在字段中的另一个EnhancedPreferences
对象。Preferences
方法对Preferences
对象进行操作。