【发布时间】:2013-10-19 19:34:09
【问题描述】:
从 Java 7 开始,以下代码是可能的:
try{
...
}
catch(FileNotFoundException | SomeOtherException e){
e.printStackTrace();
}
但在方法中模拟语法不是:
public int test(int |double d){
...
}
而必须这样做
public int test(int d){
...
}
public int test(double d){
...
}
或者这个:
public class Foo<E>{
...
public int test(E something){
...
}
}
为什么我不能在像 catch 块这样的方法中做这么简单的事情?是什么让 catch 块与众不同(除了捕获异常和它是一个块的事实)?
感谢您的帮助。
【问题讨论】:
-
因为这就是语言的设计方式。 :)
-
一个方法可以根据不同的参数类型有不同的功能。
-
在这种情况下,“只是因为”是一个有效的答案。如果我发了你会接受吗? ;-P
-
认为这还有更多。
-
您不需要
int | double,因为 double 可以存储所有可能的int值。如果您需要能够参加任何一个,请使用test(Number n),您可以通过任何一个。