我发现
PropertyEditorManager
按 ThreadGroupContext
注册/查找编辑器,而不是像 Java7 之前那样按全局注册表注册/查找编辑器。
Java7 每次都会为新的
ThreadGroup
创建一个新的 ThreadGroupContext。因此,PropertyEditorFinder(实际上注册/查找编辑器)又是新的。
Java 对某些类使用预定义编辑器(
Byte
、Long
等)并将它们注册在 PropertyEditorFinder
处的 ctor
)。假设我想为某个预定义的类(即 Long)注册自己的 PropertyEditor
。在 Java6 中很容易做到,但在 Java7 中,每次在 new 中创建线程时,我都丢失了编辑器。那么您能告诉我是否有任何解决方案可以很好地处理为 Java7 中的新
ThreadGroup
创建哪些编辑器?如果遇到一些问题,你如何克服它?
附注我想我应该为我的英语道歉=)
P.P.S。
ThreadGroup
是
ThreadGroupContext
的替代品。我希望创建上下文的实现是相似的:都使用 AppContext
到上下文之间的映射(java 6 中的 ThreadGroup
,java 7 中的 AppContext
)。 java 6 对 new ThreadGroupContext
使用与其父级相同的 AppContext
。换句话说,ThreadGroup
用于 jvm 中的整个 AppContext
树。但不幸的是,创建ThreadGroup
是不同的——它只是一个新组的新上下文。因此,如果有一天 ThreadGroupContext
使用相同的创作技术,这个问题就会自动解决。
公共类 CentralPropertyEditorManager {
ThreadGroupContext
}
通过使用这样的中央管理器,您可以避免每次创建新线程组时重新注册编辑器的麻烦,从而绕过 Java 7 中引入的限制。