1

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

4 に答える 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
于 2010-02-05T11:49:21.647 に答える
1

get および put メソッドを使用する場合は、ジェネリックを削除してから値を適切にキャストする必要があります。また、ブール値の ThreadLocal がコードで使用されている場所で正しく初期化されていることを確認する必要があります。

于 2010-02-05T10:51:43.510 に答える
0

プログラムがJava1.4の動作に正しく記述されているが、Java 1.5以降の表記法を使用している場合、私たちが何度か使用したアプローチは、Retroweaverを使用してコンパイル済みのJava1.5バイトコードをJava1.4バイトコードに変換することです。

http://retroweaver.sourceforge.net/

他にも存在しますが、これが最も効果的であることがわかったものです。

于 2010-02-05T13:45:22.357 に答える
-1

Sun からいつでもソース コードをダウンロードして、ThreadLocal クラスを確認できます。

または、このリンクを使用してください

于 2010-02-05T10:40:44.137 に答える