Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: camoay en 29 de Septiembre 2016, 13:25

Título: Exception in thread main java.lang.Error Unresolved compilation proble CU00683B
Publicado por: camoay en 29 de Septiembre 2016, 13:25
Hola a tod@s, aquí les dejo mis respuestas al ejercicio CU00683B del manual de desarrollador Java:

Código: [Seleccionar]
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.
Título: Re:Exception in thread main java.lang.Error Unresolved compilation proble CU00683B
Publicado por: Alex Rodríguez en 01 de Octubre 2016, 18:31
Hola camoay, tus respuestas son correctas. En https://www.aprenderaprogramar.com/foros/index.php?topic=2354.0 puedes encontrar comentarios útiles.

Saludos