Java类chartobyteconverter类型已弃用

我正在研究DNA蛋白质比对项目“readseq”。 它的“flybase”包中包含具有“charToByteConverter”类的java代码,该类不编译并提供“已弃用的类型”消息。 (http://iubio.bio.indiana.edu/soft/molbio/readseq/java/)。 在这里可以找到readseq源我需要在这个应用程序中添加更多function,不知道如何修复它以继续我的目标。 我是java中的一种新bie。 如果可能,请帮助Plz。 Readseq的网络很容易上网。 它只是将给定字符数组转换为字节。 以下是有关它的一些信息:(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; } } 

javadoc评论说明了一切:

不推荐使用! 替换 – 由java.nio.charset

在java.nio.charset包中查找替换类/方法。

请注意,首先使用JDK中不属于官方文档API的类是一个坏主意。

这是适应参数的完美案例,来自Michael Feathers的书“有效地使用遗留代码” 。

无耻的自我插件:这是我做的一个简短的prezi 。 它逐步细分了您需要做的事情。

基本上,您将不得不修改您拥有的代码并将适配器模式应用于参数。 你需要定义自己的接口(让我们称之为ByteSource ),让getBytes()取代你的接口( getBytes(ByteSource ctb) ),然后使内部有CharToByteConverter的Adapter进行测试。 要修复损坏的库,您应该创建一个具有java.nio.charset库。