列出<Byte>到String,你能帮助重构这个(小)方法吗?

Ant*_*val 5 java arrays bytearray

我们使用这种小实用方法.但我们不喜欢它.因为它不是非常关键(无论如何......),我们已经忘记了它.
但这很难看,因为我们必须通过整个数组,只是将它转换Byte[]byte[].
我在看 :

  • 如何Byte[]byte[]不经过它的情况下施放
  • 或者用于将List转换为字符串的实用程序方法

public static String byteListToString(List<Byte> l, Charset charset) {
    if (l == null) {
        return "";
    }
    byte[] array = new byte[l.size()];
    int i = 0;
    for (Byte current : l) {
        array[i] = current;
        i++;
    }
    return new String(array, charset);
}
Run Code Online (Sandbox Code Playgroud)

Mic*_*rdt 8

你的方法几乎是唯一的方法.你可能会发现一个外部库可以完成全部或部分内容,但它基本上会做同样的事情.

但是,代码中有一件事是潜在的问题:调用时new String(array),您使用平台默认编码将字节转换为字符.平台编码在操作系统和区域设置之间有所不同 - 使用它几乎总是等待发生的错误.它取决于您从哪里获取这些字节,但是它们的编码应该在某处指定,作为参数传递给方法并用于转换(通过使用带有第二个参数的String构造函数).