2010-11-28 2 views
64

Un ejemplo encerrando que contiene se requiereUn ejemplo encerrando que contiene <mi referencia> Se requiere

A continuación se muestra el código. positionObj es el objeto que estoy tratando de usar y me está dando el error anterior.

No está claro por qué.

package toolBox; 
import toolBox.Secretary.positionObj;  

public class PositionManagement { 
    public static HashMap<String, Secretary.positionObj> main(String vArg){ 
     positionObj newPosition=new positionObj(); 
    } 
} 

Respuesta

96

Está tratando de usar la clase interna no estática positionObj sin una instancia de Secretary para que pertenezca.
Una clase interna no estática debe pertenecer a una instancia de la clase padre

Probablemente debería cambiar positionObj a una clase normal o una clase interna estática.

O bien, puede escribir someSecretary.new positionObj() para crear una instancia de la clase interna que pertenece a la instancia someSecretary.

+0

estuvo de acuerdo, pero esta afirmación general no está nada clara. ¿Podría darme un ejemplo o señalarme en algún lugar que pueda explicar mejor esto? gracias –

+1

@jason: Aquí tienes. – SLaks

+0

sí. Me di cuenta cuando intenté depurar que si establecía mi positionObj en estática funcionaba (en su clase de secretaria). Estoy feliz y todo lo que funciona ahora, pero gracias por el puntero. Veremos la causa real de este error. –

0

La firma genérica correcta sería

public static HashMap<String, positionObj> main(String vArg) 

usted no necesita para calificar positionObj puesto que ya lo importa.

Sin embargo, estoy bastante seguro de que un método principal debe cumplir con la firma a continuación. Si la intención de tener principal será el método principal para su programa, cambiar la firma a

public static void main(String[] args) {...} 

puede crear un método estático separado que devuelve un mapa e invocar desde principal.

Como nota, todas las clases deben comenzar con una letra mayúscula, positionObj, debe ser PositionObj.

+0

hey, dejó algún código. estuvo de acuerdo sobre el caso. la clase devuelve algo, pero el error está aquí y no tengo claro por qué. –

+0

@jason, actualicé mi respuesta – hvgotcodes

+0

@jason, no creo que puedas devolver nada desde main. – hvgotcodes

1

Primero crea un objeto de clase Outer. En este caso, creo "Secretario". Luego crea positionObj. De esta manera,

Secretary x = new Secretary(); 
Secretary.positionObj y = x.new positionObj(); 
Cuestiones relacionadas