Java 其他类型是否使用竖条?
可能重复:Java 其他类型是否使用竖条?,java,oop,interface,java-7,unions,Java,Oop,Interface,Java 7,Unions,可能重复: 在Java SE 7中,可以捕获多种类型的异常: catch (IOException|SQLException ex) { logger.log(ex); throw ex; } 这种语法还有其他用法吗 我可以用这种语法创建联合吗 public void main() { Integer|Boolean a; a=true; a=Integer.Zero; } 或者我可以用它来匿名派生多个接口,比如 public void main() {
在Java SE 7中,可以捕获多种类型的异常:
catch (IOException|SQLException ex) {
logger.log(ex);
throw ex;
}
这种语法还有其他用法吗
我可以用这种语法创建联合吗
public void main() {
Integer|Boolean a;
a=true;
a=Integer.Zero;
}
或者我可以用它来匿名派生多个接口,比如
public void main() {
Object o = new List<Integer>|Comparable<List<Integer>>() {
// here implementing both interfaces...
}
}
public void main(){
对象o=新列表|可比(){
//在这里实现两个接口。。。
}
}
该类型是IOException和SQLException,Exception的最小上限,但如果重新显示异常,则会使用特殊规则,确保选中的异常列表为IOException和SQLException,而不是Exception
有关更精确的详细信息,请参见Java语言规范第14.20节-
在Java中,除了选择三元运算符的类型之外,其他地方实际上没有什么类似的东西。而且,不,除了一次捕获多个异常之外,你不能做任何事情。@JB为什么?他们会来多久?:)因为第一种方法会将Java转换成松散类型的语言(这是永远不会发生的),而第二种方法没有被考虑,甚至没有提交给项目。如果你希望这样的事情发生,请提交一份RFE,但是我想,这会使语言更加臃肿,没有任何明显的优势。没有松散的类型。大多数特定的公共祖先,就像例外一样。然后直接将变量声明为
Object
。