ich einige Java-Code haben, die geschweiften Klammern auf zwei ArtenWas bedeuten geschweifte Klammern in Java für sich?
// 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);
Was diese Stand-alone geschweiften Klammern nach dem ersten if
Aussage bedeuten, verwendet?
Ein weiterer "Vorteil" ist in diesem Fall, dass 'copy' Müll vor' outAMethodExp (gesammelt werden können) 'kehrt zurück. Wenn dies ein lang andauernder oder speicherintensiver Aufruf ist, kann das hilfreich sein. Ich gebe "Nutzen" in Anführungszeichen, weil das Refactoring in separate Methoden generell viel sauberer und übersichtlicher ist, als diese Syntax zu nutzen. – dimo414
Tatsächlich wirkt sich das Scoping einer Variablen ** nicht ** auf die Garbage Collection aus. In allen modernen JVMs, die mir bekannt sind, kann das JIT feststellen, ob ein Objekt für GC in Frage kommt, unabhängig davon, ob Rahmenkonstruktionen wie geschweifte Klammern vorhanden oder nicht vorhanden sind. –