¿Cuál es la diferencia entre estas dos declaraciones internas? ¿También comentar sobre ventajas/desventajas?Clase interna en la interfaz vs en la clase
caso A: clase dentro de una clase.
public class Levels {
static public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
y caso B: clase dentro de la interfaz.
public interface Levels{
public class Items {
public String value;
public String path;
public String getValue() {
return value;}
}
}
Corrección hecha: a la colocación del método getvalue.
más información: Puedo instanciar la clase Elementos en los dos casos A y B en otra clase que no implementa la interfaz AT ALL.
public class Z{//NOTE: NO INTERFACE IMPLEMENTED here!!!!
Levels.Items items = new Levels.Items();
}
Desde una interfaz no se instancia, todos los elementos dentro de una interfaz son accesibles en la notación de punto sin interfaz NIVELES instanciado simplemente porque no se puede crear una instancia de una interfaz - hacer efectiva una clase definida dentro de una interfaz permeable a la referencia estática.
Diciendo que la clase Elementos en el caso B no es estática no tiene sentido. Como ambos casos A y B se instancian de la misma manera, no busco la semántica en lo que es estático o interno o anidado. Deja de darme respuestas sobre semántica. Quiero el compilador, el tiempo de ejecución y las diferencias/ventajas de comportamiento, o si ninguno lo dice. No más respuestas sobre semántica por favor !!!!! Un experto en JVM o especificación de VM .NET invitan esta pregunta de respuesta en lugar de libros de texto semanticissiests.
entrevista ¿pregunta? –
No estoy buscando la semántica de si se llama clase interna o anidada. Estoy buscando diferencias de características. –
@ h2g2: después de reformatear el código, el segundo ejemplo es incorrecto, no puede tener un método implementado en una interfaz. O tal vez las llaves no estaban en su lugar correcto ... –