Pet*_*rey 72 java arrays syntax declaration
有没有人看过[]
像这样的方法签名后放置的数组?
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)
Jon*_*eet 90
有谁知道为什么这甚至被允许?
在这种情况下,它是为了向后兼容Java本身.从JLS第8.4节:
为了与旧版本的Java SE平台兼容,允许返回数组的方法的声明放置(部分或全部)在形式参数列表之后形成数组类型声明的空括号对.以下过时的生产支持此功能,但不应在新代码中使用.
是的,你应该把它视为一种令人厌恶的憎恶,除了震惊其他开发者之外没有任何好的目的.实际上,你可以用它来赢得聚会上的一些钱,因为他们认为它会编译,反对那些从未见过它的人......
这是正确的编码人员期望无效的方法:
public String[] mwahahaha(String[] evil[])[] {
return evil;
}
Run Code Online (Sandbox Code Playgroud)
MrS*_*h42 19
就像是
String[] a;
Run Code Online (Sandbox Code Playgroud)
是相同的
String a[];
Run Code Online (Sandbox Code Playgroud)
同样适用于方法返回类型的语法
public static String mySplit(String s)[] {
Run Code Online (Sandbox Code Playgroud)
是相同的
public static String[] mySplit(String s) {
Run Code Online (Sandbox Code Playgroud)
但我想我还没有看到你在高效代码中提到过的版本.
我认为以下变量声明都是等效的原因相同
String[] array
String array[]
Run Code Online (Sandbox Code Playgroud)
这是C开发人员所做的事情,因此它被包含在内以帮助他们.
归档时间: |
|
查看次数: |
2224 次 |
最近记录: |