gpt4 book ai didi

java - 奇怪的数组返回类型

转载 作者:IT老高 更新时间:2023-10-28 13:50:53 25 4
gpt4 key购买 nike

有没有人见过像这样放在方法签名之后的数组[]

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));
}

打印

[a, b, c, d, e]

过去,“C”兼容性的奇怪符号一直存在,但我也无法想象有人用 C 编写此代码。

有谁知道为什么甚至允许这样做?

我正在使用 Java 7 update 10,以防万一。

这在 Java 6 中做同样的事情。http://ideone.com/91rZV1


顺便说一句,这不会编译,我也不希望它编译

public static <T> List mySplit(String s)<T> {
return Collections.emptyList();
}

最佳答案

Does anyone know why this is even allowed?

在这种情况下,它是为了向后兼容 Java 本身。来自 JLS section 8.4 :

For compatibility with older versions of the Java SE platform, the declaration of a method that returns an array is allowed to place (some or all of) the empty bracket pairs that form the declaration of the array type after the formal parameter list. This is supported by the following obsolescent production, but should not be used in new code.

是的,您确实应该将其视为可憎之物,除了震惊其他开发人员之外没有其他任何目的。实际上,你可以用它在聚会上赢一些钱,赌它会编译,对抗那些从未见过它的人......

以下是正确的编码人员认为无效的方法:

public String[] mwahahaha(String[] evil[])[] {
return evil;
}

关于java - 奇怪的数组返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14203298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com