Java - Tipo personalizado anidado en clase

Pinco:

Estoy pidiendo una vez más para soporte técnico.

Necesito para definir un tipo personalizado dentro de una clase, lo he hecho así:

public class MainClass {
    private class CustomType {
        public byte[] varA;
        public int varB;

        public CustomType() {
            varA = new byte[3];   
            varB = 13;
        }
    }

    private CustomType[] myArray;


    public MainClass() {
        myArray = new CustomType[1024]
        System.out.println(this.CustomType[0].varB);
    }
}

Cuando corro que arroja un NullPointerExceptionaSystem.out.println(this.CustomType[0].varB);

He probado si miMatriz se ha inicializado correctamente con 1024 elementos y lo hace, sin embargo, me parece que no puede acceder a ellos.

Me acabo de mudar de C ++ para Java, así que todavía estoy acostumbrando a ella, me estoy perdiendo algo flagrante ?.

Joop Eggen:

Dos cosas,

  • Usted debe crear una instancia CustomType.
  • CustomType no necesita tener acceso a MainClass.thislo que puede hacer que sea estática.

Entonces

public class MainClass {
    private static class CustomType {
        public byte[] varA;
        public int varB;

        public CustomType() {
            varA = new byte[3];   
            varB = 13;
        }
    }

    private CustomType[] myArray;


    public MainClass() {
        myArray = new CustomType[1024];
        for (int i = 0; i < myArray.length; ++i) {
            this.CustomType[i] = new CustomType();
        }
        // Or
        Arrays.setAll(myArray, CustomType::new);
        System.out.println(this.CustomType[0].varB);
    }
}

No es por lo que es un memorias estáticas MainClass.thisen cada CustomTypeinstancia que es una sobrecarga innecesaria.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=293075&siteId=1
Recomendado
Clasificación