我今天查看了一些Java代码,我发现了一些奇怪的语法:
public class Sample {
public int get()[] {
return new int[]{1, 2, 3};
}
}
Run Code Online (Sandbox Code Playgroud)
我认为无法编译并想修复我认为的错字,但后来我记得Java编译器确实接受了它!
有人可以帮我理解这是什么意思吗?它是一组函数吗?
有没有人看过[]像这样的方法签名后放置的数组?
public static String mySplit(String s)[] {
return s.split(",");
}
public static void main(String... args) {
String[] words = mySplit("a,b,c,d,e");
System.out.println(Arrays.toString(words));
}
Run Code Online (Sandbox Code Playgroud)
版画
[a, b, c, d, e]
Run Code Online (Sandbox Code Playgroud)
在过去,奇怪的符号一直是"C"兼容性,但我不会想象有人在C中写这个.
有谁知道为什么这甚至被允许?
我正在使用Java 7更新10,以防万一.
这在Java 6中也是如此.http://ideone.com/91rZV1
BTW这不编译,我也不期望它
public static <T> List mySplit(String s)<T> {
return Collections.emptyList();
}
Run Code Online (Sandbox Code Playgroud) 正在寻找源代码ByteArrayOutputStream,我看到了这个功能:
public synchronized byte toByteArray()[] {
return Arrays.copyOf(buf, count);
}
Run Code Online (Sandbox Code Playgroud)
这种语法记录在哪里?我的意思是[]在功能面前.这是否与声明一个常规数组相同,其中括号可以在数组的名称之后或之前,但在这种情况下,括号可以在函数名称之后?
String[] args;
Run Code Online (Sandbox Code Playgroud)
VS
String args[];
Run Code Online (Sandbox Code Playgroud)
编辑:2018-05-22
我在这里发现了更多这种疯狂语法的用法:你不了解Java的10件事
#3是他们提到可以利用上述语法的所有方法的地方