我有一些以两种方式使用花括号的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语句之后,这些独立的花括号是什么意思?
if
额外括号的唯一目的是提供范围限制。这些List<PExp> copy将仅存在于这些大括号内,并且将不在它们之外。
List<PExp> copy
如果这是生成的代码,则我假设代码生成器会执行此操作,因此它可以插入一些代码(例如此代码),而不必担心它插入了a的次数,List<PExp> copy并且不必担心如果此代码段可能会重命名变量多次插入同一方法。