如何在 Java 中初始化长度为 0 的字符串数组?
Posted
技术标签:
【中文标题】如何在 Java 中初始化长度为 0 的字符串数组?【英文标题】:How can I initialize a String array with length 0 in Java? 【发布时间】:2010-12-12 13:22:41 【问题描述】:该方法的 Java 文档String[] java.io.File.list(FilenameFilter filter)
在退货说明中包含此内容:
如果目录为空或过滤器不接受任何名称,则数组将为空。
我该如何做类似的事情并将字符串数组(或任何其他数组)初始化为长度为 0?
【问题讨论】:
我刚刚意识到这是一个愚蠢的问题 :( 因为这些数组的初始化方式与任何其他数组的初始化方式完全相同,只是大小为 0。显示了我现在初始化数组的频率。我会离开问题(不是删除它)因为有一天其他人可能和我一样愚蠢:) 我对长度为 0 的数组有什么用例以及在这种特殊情况下为什么不简单地初始化到null
感到困惑。
【参考方案1】:
正如其他人所说,
new String[0]
确实会创建一个空数组。然而,数组有一个好处——它们的大小不能改变,所以你总是可以使用相同的空数组引用。所以在你的代码中,你可以使用:
private static final String[] EMPTY_ARRAY = new String[0];
然后在每次需要时返回 EMPTY_ARRAY
- 无需每次都创建新对象。
【讨论】:
看来大家都喜欢打字:private static final String[] EMPTY_ARRAY = ;
@Thomas:我同意你的观点,但对于这种特殊情况,我更喜欢更明确的形式。对我来说更清楚的是,它的意思是“我想要一个包含 0 个元素的字符串数组”,而不是“我想要一个包含这个内容的数组——它是空的”。我猜只是个人喜好。
@Tony - 我必须使用 Java 可以推断类型的少数几个地方。 :-)
@delive:我提供的示例仍然会创建一个空数组,但是因为它是空的,所以您不能使用EMPTY_ARRAY[0]
- 这是试图访问不存在的元素 0 ...
@theyuv:最终这并不重要。如果您只在一个地方需要它,请在该类中声明它。如果您发现在更多地方需要它,您可以随时将其移至“实用程序”类。【参考方案2】:
String[] str = new String[0];
?
【讨论】:
【参考方案3】:String[] str = ;
但是
return ;
由于缺少类型信息而无法使用。
【讨论】:
return new String[] ;
和 return new String[0];
都可以。【参考方案4】:
好的,我实际上找到了答案,但我认为无论如何我都会将问题“导入”到 SO 中
String[] files = new String[0];
或int[] files = new int[0];
【讨论】:
在您的问题中添加此类评论...或选择其中一个具有相同含义的答案。 感谢乔纳森的评论。正如您可能已经注意到的那样,我在其他人之前发布了这个答案(因此没有答案可供选择)。我也看不出将答案添加到问题中会产生更好的问题。 @Ron Tuffin -> 2009 年 11 月 3 日 7:49:10Z 提问 -> 2009 年 11 月 3 日 7:49:57Z 回答了您甚至没有花一分钟时间回答自己的问题题?真的吗? :)【参考方案5】:您可以使用 org.apache.commons.lang3 中的 ArrayUtils.EMPTY_STRING_ARRAY
import org.apache.commons.lang3.ArrayUtils;
class Scratch
public static void main(String[] args)
String[] strings = ArrayUtils.EMPTY_STRING_ARRAY;
【讨论】:
【参考方案6】:创建一个不会返回 null 的函数,而是返回一个空数组,您可以通过下面的代码来理解。
public static String[] getJavaFileNameList(File inputDir)
String[] files = inputDir.list(new FilenameFilter()
@Override
public boolean accept(File current, String name)
return new File(current, name).isFile() && (name.endsWith("java"));
);
return files == null ? new String[0] : files;
【讨论】:
【参考方案7】:你可以使用以下东西-
1. String[] str = new String[0];
2. String[] str = ArrayUtils.EMPTY_STRING_ARRAY;<br>
两者都是一样的。
【讨论】:
以上是关于如何在 Java 中初始化长度为 0 的字符串数组?的主要内容,如果未能解决你的问题,请参考以下文章