Problema con Instancias de Objetos y Punteros.
Publicado por Rock Storm (2 intervenciones) el 18/02/2014 16:52:11
Hola buenas, mi problema es el siguiente: (me encontré en esta encrucijada con un problema más complejo que he tratado de simplificar al máximo, es decir, ya se que lo que hacen estas dos clases se puede hacer en una sola porque es muy simple, pero en el problema real no me es posible)
El problema consiste en dos clases, en el constructor de la segunda clase (la Clase B) se "instancia" un objeto de la clase ClassArray. Necesito, o me gustaría, poder usar esta instancia (que en el código se llama "newarray"), en el resto de métodos de la clase B. Ambas clases compilan sin problemas pero el método "manageNewArray" da un error como si el puntero "newarray" estuviese vacío. (En mi problema real hay más de un método que llama a métodos de "newarray").
¿Esto de inicializar la instancia de un objeto en el constructor y hacer uso de ella en el resto de métodos de la clase es posible?
El error que obtengo al ejecutar estas clases es este:
El problema consiste en dos clases, en el constructor de la segunda clase (la Clase B) se "instancia" un objeto de la clase ClassArray. Necesito, o me gustaría, poder usar esta instancia (que en el código se llama "newarray"), en el resto de métodos de la clase B. Ambas clases compilan sin problemas pero el método "manageNewArray" da un error como si el puntero "newarray" estuviese vacío. (En mi problema real hay más de un método que llama a métodos de "newarray").
¿Esto de inicializar la instancia de un objeto en el constructor y hacer uso de ella en el resto de métodos de la clase es posible?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class ClassB {
private ClassArray newarray;
public ClassB(int N) {
ClassArray newarray = new ClassArray(N*2);
}
public void manageNewArray() {
newarray.doubleArray();
newarray.writeArray();
}
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
ClassB oneObject = new ClassB(N);
oneObject.manageNewArray();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class ClassArray {
private int[] array;
public ClassArray(int N) {
array = new int[N];
for (int i=0; i<N; i++) array[i] = i;
}
public void writeArray() {
for (int i=0; i<array.length; i++)
System.out.print(array[i]);
System.out.println();
}
public void doubleArray() {
for(int i=0; i < array.length; i++) array[i] = i*2;
}
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
ClassArray onearray = new ClassArray(N);
onearray.writeArray();
}
}
El error que obtengo al ejecutar estas clases es este:
1
2
3
Exception in thread "main" java.lang.NullPointerException
at ClassB.manageNewArray(ClassB.java:10)
at ClassB.main(ClassB.java:17)
Valora esta pregunta


0