El código en el siguiente fragmento funciona bien. Cuenta el número de objetos creados usando un campo estático de tipo int
que es cnt
.Un bucle de una sola línea con un par obligatorio de llaves en Java
public class Main
{
private static int cnt;
public Main()
{
++cnt;
}
public static void main(String[] args)
{
for (int a=0;a<10;a++)
{
Main main=new Main();
}
/*for (int a=0;a<10;a++)
Main main=new Main();*/
System.out.println("Number of objects created : "+cnt+"\n\n");
}
}
Muestra la siguiente salida.
Number of objects created : 10
La única cuestión es que cuando se quita el par de llaves de la for
bucle anteriormente (véase el for
bucle comentado), se emite un error de tiempo de compilación que indica
nouna declaración .
¿Por qué en esta situación particular, un par de llaves es obligatoria a pesar de que el bucle incluye solamente una sola declaración?
'Principal main = new Main();' es una declaración, no una declaración. – Mysticial
@Mysticial: una declaración con inicialización. ¿Por qué la parte de inicialización no se considera una declaración? – Razvan
@Razvan No veo ninguna razón técnica por la que no pueda. Por lo tanto, parece ser una elección de diseño de Java o C/C++ (donde Java heredó gran parte de su semántica básica). – Mysticial