C#=> JAVA:在声明时填充静态ArrayList.可能?

Pet*_*rdk 2 c# java list arraylist

在我的C#项目中,我有一个静态List,在声明时立即被填充.

  private static List<String> inputs = new List<String>()
        { "Foo", "Bar", "Foo2", "Bar2"};
Run Code Online (Sandbox Code Playgroud)

我如何使用ArrayList在Java中执行此操作?

我需要能够访问值而无需创建类的实例.可能吗?

Cli*_*int 16

您可以使用Double Brace Initialization.看起来像:

private static List<String> inputs = new ArrayList<String>()
  {{ add("Foo");
    add("Bar");
    add("Foo2");
    add("Bar2");
  }};
Run Code Online (Sandbox Code Playgroud)


MAK*_*MAK 8

我不明白你的意思

能够访问值而无需创建类的实例

但是Java中的以下代码片段在Java中与您的代码几乎相同:

private static List<String> inputs = Arrays.asList("Foo", "Bar", "Foo2", "Bar2");
Run Code Online (Sandbox Code Playgroud)

  • 因为它是一个静态字段,它确实应该是不可变的.不幸的是,这增加了冗长度.`private static final List <String> inputs = Collections.unmodifiableList(Arrays.asList("Foo","Bar","Foo2","Bar2"));`.应该在JDK7中获取列表文字. (4认同)

Jas*_*ols 7

您可以通过将它们包含在静态{}括号中来进行静态调用,如下所示:

private static final List<String> inputs = new ArrayList<String>();

static {
  inputs.add("Foo");
  inputs.add("Bar");
  inputs.add("Foo2");
  inputs.add("Bar2");
}
Run Code Online (Sandbox Code Playgroud)


jdm*_*hal 5

你需要这个是ArrayList专门的,还是只是一个列表?

前任的:

private static java.util.List<String> inputs = new java.util.ArrayList<String>(
    java.util.Arrays.<String>asList("Foo", "Bar", "Foo2", "Bar2"));
Run Code Online (Sandbox Code Playgroud)

后者:

private static java.util.List<String> inputs =
    java.util.Arrays.<String>asList("Foo", "Bar", "Foo2", "Bar2");
Run Code Online (Sandbox Code Playgroud)

java.util.Arrays #asList(...)API