将JDK1.5 ThreadLocal代码移植到JDK1.4
我有以下在 JDK5 上运行的代码,
private static ThreadLocal<String> messages = new ThreadLocal<String>();
private static ThreadLocal<Boolean> dontIntercept = new ThreadLocal<Boolean>() {
@Override
protected Boolean initialValue() {
return Boolean.FALSE;
}
};
我希望在 JDK1.4 上运行它。请告知需要进行哪些更改
I have below piece code which runs on JDK5
private static ThreadLocal<String> messages = new ThreadLocal<String>();
private static ThreadLocal<Boolean> dontIntercept = new ThreadLocal<Boolean>() {
@Override
protected Boolean initialValue() {
return Boolean.FALSE;
}
};
I wish to run it on JDK1.4. Please advice what changes will be required
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
@Override
注释。因此,
当使用
.booleanValue()
取消装箱。Boolean.valueOf
的框。@Override
annotation.So
When using
Boolean
..booleanValue()
.Boolean.valueOf
.您必须摆脱泛型,然后在使用 get 和 put 方法时适当地转换值。您还需要确保布尔值 ThreadLocal 在代码中使用时正确初始化。
You will have to get rid of the generics and then cast the values appropriately when using the get and put methods. You'll also need to ensure that the boolean ThreadLocal is initialised correctly where it is used in the code.
如果程序正确编写为 Java 1.4 行为,但使用 Java 1.5+ 表示法,我们多次使用的方法是使用 Retroweaver 将编译后的 Java 1.5 字节代码转换为 Java 1.4 字节代码。
http://retroweaver.sourceforge.net/
其他也存在,但这是我们发现可以工作的一个最好的。
If the program is correctly written to Java 1.4 behaviour, but uses Java 1.5+ notation, an approach we have used several times is to use Retroweaver to convert the compiled Java 1.5 byte code to Java 1.4 byte code.
http://retroweaver.sourceforge.net/
Others exist, but this is the one we have found to work the best.
您始终可以从 sun 下载源代码并查看 ThreadLocal 类。
或者使用这个链接
You could always download the source code from sun and have a look at the ThreadLocal class.
Or use this link