3

我正在研究 DNA 蛋白质比对项目“readseq”。它的“flybase”包包含具有“charToByteConverter”类的 java 代码,该类不编译并给出“type deprecated”消息。(http://iubio.bio.indiana.edu/soft/molbio/readseq/java/)。 在这里可以找到 readseq 源我需要在这个应用程序中添加更多功能,不知道如何修复它以实现我的目标。我是java中的一种新人。如果可能,请帮助。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 包中寻找替换类/方法。

请注意,在 JDK 中使用不属于官方记录的 API 的类首先是个坏主意。

于 2012-05-04T08:10:51.920 回答
1

这是Adapt Parameter的完美案例,来自 Michael Feathers 的Working Effectively With Legacy Code

无耻的自我插入:这是我在上面做的一个简短的 prezi。它对您需要做的事情进行了分步细分。

本质上,您将不得不修改您拥有的代码并将适配器模式应用于参数。您将要定义自己的接口(我们称之为ByteSource),getBytes()取而代之的是您的接口(getBytes(ByteSource ctb)),然后制作内部有一个CharToByteConverter用于测试的适配器。要修复损坏的库,您应该制作一个具有 a 的库java.nio.charset

于 2012-05-04T08:20:10.090 回答