Java中的花括号自身代表什么?

85

我有一些使用花括号的Java代码,其用法有两种。

// Curly braces attached to an 'if' statement:
if(node.getId() != null)
{
    node.getId().apply(this);
}

// Curly braces by themselves:
{
    List<PExp> copy = new ArrayList<PExp>(node.getArgs());
    for(PExp e : copy)
    {
        e.apply(this);
    }
}
outAMethodExp(node);

第一个if语句后面的那些独立的花括号是什么意思?

11个回答

0
作为有趣的注释:花括号实际上启用了一个语句类别:声明。
这是非法的:if(a) int f; 但这是合法的:if(a) { int f; }

这段代码是无用的,你将无法在大括号外看到f。使用它需要在同一作用域内声明和使用它。因此你需要多于一个语句,所以你需要大括号。 - Pavel Feldman
这就是我所提到的编译器检查的重点。我觉得有趣的是“隐式作用域”(我认为每个没有大括号的单行代码都属于此类),和显式作用域之间存在差异。很容易忘记编译器会有所不同。 - Hugo
如果(userWantsTocInReport){new Toc(report);}呢?我不是说这是编写它的理想方式,但出于某种原因,有人可能会选择这样做。 - user625488

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接