将JDK1.5 ThreadLocal代码移植到JDK1.4

时间:2010-02-05 10:33:51

标签: java generics portability thread-local

我有下面的代码,它运行在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上运行它。请告知需要进行哪些更改

4 个答案:

答案 0 :(得分:1)

使用get和put方法时,必须删除泛型,然后适当地转换值。您还需要确保在代码中使用它的位置正确初始化布尔ThreadLocal。

答案 1 :(得分:1)

  • 删除泛型。
  • 删除协变回报。
  • 删除@Override注释。

所以

private static final ThreadLocal messages = new ThreadLocal();
private static final ThreadLocal dontIntercept = new ThreadLocal() {
    protected Object initialValue() {
        return Boolean.FALSE;
    }
};

使用时

  • 将值转换回Boolean
  • 使用.booleanValue()打开包装。
  • 包含Boolean.valueOf
  • 的邮箱

答案 2 :(得分:0)

如果程序正确写入Java 1.4行为,但使用Java 1.5+表示法,我们多次使用的方法是使用Retroweaver将编译的Java 1.5字节代码转换为Java 1.4字节代码。

http://retroweaver.sourceforge.net/

其他人存在,但我们发现这是最好的。

答案 3 :(得分:-1)

您可以随时从sun下载源代码并查看ThreadLocal类。

或使用此link