3

私はDNAタンパク質アラインメントプロジェクト「readseq」に取り組んでいます。その「flybase」パッケージには、コンパイルせずに「typedeprecated」メッセージを表示する「charToByteConverter」クラスを持つJavaコードが含まれています。(http://iubio.bio.indiana.edu/soft/molbio/readseq/java/)。 ここでreadseqソースを見つけることができます。このアプリケーションにさらにいくつかの機能を追加する必要があります。目標に向かって進むためにそれを修正する方法がわかりません。私はJavaの一種の初心者です。可能であれば、Plzが役立ちます。Readseqは、そのGUIを使用してネット上で簡単に入手できます。指定された文字の配列をバイトに変換するだけです。これに関する情報は次のとおりです:(docjar.com/docs/api/sun/io/CharToByteConverter.html)。これが廃止されることについてどうしたらよいかわかりません。これは、以下のように使用される抽象クラスです。

protected byte[] getBytes(CharToByteConverter ctb) {
        ctb.reset();
        int estLength = ctb.getMaxBytesPerChar() * count;
        byte[] result = new byte[estLength];
        int length;

        try {
            length = ctb.convert(value, offset, offset + count,
                     result, 0, estLength);
            length += ctb.flush(result, ctb.nextByteIndex(), estLength);
        } catch (CharConversionException e) {
            length = ctb.nextByteIndex();
        }

        if (length < estLength) {
            // A short format was used:  Trim the byte array.
            byte[] trimResult = new byte[length];
            System.arraycopy(result, 0, trimResult, 0, length);
            return trimResult;
        }
        else {
            return result;
        }
}
4

2 に答える 2

3

javadocのコメントはそれをすべて述べています:

非推奨!置換-java.nio.charsetに置き換え

java.nio.charsetパッケージで置換クラス/メソッドを探します。

公式に文書化されたAPIの一部ではないJDKのクラスを使用することは、そもそも悪い考えであることに注意してください。

于 2012-05-04T08:10:51.920 に答える
1

これは、 Michael Feather の本Working Effectively With Legacy CodeのAdapt Parameterの完璧なケースです。

恥知らずな自己プラグ:これは、私が行った短い prezi です。それはあなたがする必要があることの段階的な内訳を持っています.

基本的に、持っているコードを変更し、アダプター パターンをパラメーターに適用する必要があります。独自のインターフェースを定義し ( と呼びましょうByteSource)、getBytes()代わりに独自のインターフェースを使用して ( getBytes(ByteSource ctb))、テスト用の を内部に持つアダプターを作成CharToByteConverterします。壊れたライブラリを修正するには、java.nio.charset代わりに を持つライブラリを作成する必要があります。

于 2012-05-04T08:20:10.090 に答える