在方法参数中初始化数组

aks*_*mit 27 java arrays string methods

在PHP中,您可以执行以下操作:

method(array("a", "b"));
Run Code Online (Sandbox Code Playgroud)

您是否可以在Java中将String数组初始化为方法调用中的参数,如tihs:

method(new String[] = {"a", "b"});
Run Code Online (Sandbox Code Playgroud)

谢谢!

Hov*_*els 63

Java有一个等价的结构:

import java.util.Arrays;

public class Foo {
   public void method(String[] myStrArray) {
      System.out.println(Arrays.toString(myStrArray));
   }

   public static void main(String[] args) {
      Foo foo = new Foo();
      foo.method(new String[]{"hello", "goodbye"}); // **array created inline**
   }
}
Run Code Online (Sandbox Code Playgroud)


mis*_*tor 6

@ Hovercraft的答案显示了如何在Java中内联创建数组.

您可以通过使用实用方法(利用Java的有限类型推断)来摆脱冗余数组类型注释,从而进一步改进该解决方案.

码:

import java.util.Arrays;

// Utility class
class Array {
  public static <A> A[] of(A ... elements) {
    return elements;
  }
}

// Main class
class Main {
  public static void method(String[] s) {
    System.out.println(Arrays.toString(s));
  }

  public static void main(String[] args) {
    method(Array.of("a", "b", "c"));
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我以前从未见过这个.谢谢你的教育! (2认同)

Sea*_*oyd 5

Java 有可变参数方法:

public void foo(String ... args){
    for(String arg : args){
        // do something
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以使用 0 到 n 个参数调用这样的方法,编译器从参数创建一个数组,例如该方法等效于此签名:

public void foo(String[] args)
Run Code Online (Sandbox Code Playgroud)