我一直在尝试解决链接here上的问题。我的解决方案在 testdome 上遇到了 stackoverflow 错误,尽管当我在 IDE 中运行它时它可以工作。
我的解决方案:
private static boolean prefixused;
@Override
public void write(byte[] b, int off, int len) throws IOException {
byte [] prefixarr = new byte [prefix.length()+b.length];
if(prefixused)
write(b, 0, b.length);
else
for(char c : prefix.toCharArray()){
write((int)c);
}
write(prefixarr, 0, prefixarr.length);
prefixused = true;
}
最佳答案
问题是您正在调用 write 而不是stream.write(这是任务的一部分)。如果是这样的话,它不应该抛出错误:
@Override
public void write(byte[] b, int off, int len) throws IOException {
if(prefixused)
stream.write(b, 0, b.length);
else
for(char c : prefix.toCharArray()){
stream.write((int)c);
}
stream.write(b, off, len);
prefixused = true;
}
但是这个解决方案通过了所有测试并且更加优雅:
@Override
public void write(byte[] b, int off, int len) throws IOException {
if (prefix != null) {
stream.write(prefix.getBytes(StandardCharsets.UTF_8));
prefix = null;
}
stream.write(b, off, len);
}
关于java - Testdome - DecoratorStream Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54525933/