Hola a tod@s, aquí les dejo mis respuestas al ejercicio CU00683B del manual de desarrollador Java:
package com.aprenderaprogramar.java.iniciacion.clase83;
public class Test {
int atributo1;
Test (int atrib) {atributo1 = 0;}
public static void main (String[ ] Args) {
System.out.println ("Mensaje 1");
System.out.println ("Atributo 1 vale" + this.getAtrib1());
} //Cierre del main
public int getAtrib1() {return atributo1;}
} //Cierre de la clase
EJERCICIO:
¿Qué mensaje de error se obtiene?
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot use this in a static context
at com.aprenderaprogramar.java.iniciacion.clase83.Test.main ( Test.java:8 )
¿Por qué se obtiene este mensaje de error?
Porque desde un método estático estamos llamando a un método de instancia de la
propia clase Test,de la que no se ha generado ningún objeto previo,por lo que
tampoco existe el campo declarado atributo1 que es también un atributo de
instancia de la misma clase.
¿Cómo podemos solucionarlo para que se ejecute lo que pretendemos?
Declarando como estáticos, tanto al método getAtrib1(), como el campo atributo1.
De esa manera no hay necesidad de crear ningún objeto previo, porque se
convierten ambos en campos y métodos de clase.
Gracias por sus comentarios.