2010-02-05 66 views
1

下面我有它運行在JDK5移植JDK1.5 ThreadLocal的代碼JDK1.4

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運行一塊代碼。請諮詢需要進行哪些更改

回答

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
1

你將不得不擺脫仿製藥的,然後使用get和put方法時,適當地投出值。您還需要確保布爾ThreadLocal在代碼中使用的地方正確初始化。

0

如果程序正確寫入Java 1.4行爲但使用Java 1.5+符號,我們已經多次使用的方法是使用Retroweaver將已編譯的Java 1.5字節代碼轉換爲Java 1.4字節代碼。

http://retroweaver.sourceforge.net/

其他存在的,但是這是我們已經找到最好的工作之一。