【发布时间】:2021-12-22 01:52:30
【问题描述】:
我有一个 StringBuilder 对象数组,如下所示。
StringBuilder[] sbCmd = new StringBuilder[5];
int cntr = 0;
sbCmd[cntr++].append("add");
sbCmd[cntr++].append("sub");
sbCmd[cntr++].append("mul");
sbCmd[cntr++].append("div");
sbCmd[cntr++].append("mod");
现在我有一个函数,它接受一个字符串数组作为输入,如下所示。
ConfigureMathOperation(String[] array)
{
//Do some work
}
我怎么称呼它?我在这里尽量避免使用 String[],因为它是不可变的(我有一些敏感数据需要在函数调用后清除)。
我必须为存储在数组中的每个 StringBuilder 对象调用 toString 吗?示例代码 sn-p 真的很有帮助,因为我是 Java 新手。
例如我想如下调用,但它不起作用,因为我不知道如何调用每个 StringBuilder 对象。
ConfigureMathOperation(sbCmd.toString());
【问题讨论】:
-
“我必须为存储在数组中的每个 StringBuilder 对象调用 toString 吗?” => 差不多,一种或另一种。顺便说一句:您的
.append调用将按原样引发NullPointerExceptions。 -
是的,您必须致电
toString()。这意味着您也无法从内存中清除数据,而必须依靠垃圾收集器来完成这项工作。请注意,理论上您可以修改(或覆盖)ConfigureMathOperations以也接受CharSequence对象并避免使用toString()来解决此问题。 -
"How to convert StringBuilder[] to String[]" 和 "I'm trying to Avoid String[] here" 是矛盾的。
-
@ernest_k 你能帮我看看它是如何抛出 NullPointerException 的吗,抱歉我是 Java 新手。
-
@JoachimSauer 不幸的是,我无法覆盖 ConfigureMathOperations,因为它是一个库函数,它执行最终任务
标签: java string stringbuilder