Java - Problema de referencia, es null

 
Vista:
Imágen de perfil de Juan José
Val: 54
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema de referencia, es null

Publicado por Juan José (20 intervenciones) el 10/12/2020 13:05:16
Me devuelve error desde ArrayList pero quiero que solo mande "null"

1
2
3
4
5
6
7
8
9
Pair<String, ArrayList<Double>> par3 = new Pair<String, ArrayList<Double>>("Edward", null);
 
assertEquals("Edward", par3.getKey());
 
try {
	par3.getValue().add(3.0); //par3 tiene como valor una referencia nula
}catch(Exception e) {
	assertEquals(e.getMessage(), null);
}

En la Clase PAIR tenemos este código, decir que la key está declarada como final.

1
2
3
4
5
6
7
8
9
10
11
12
public Pair(K key, V value) {
	this.key = key;
	this.value = value;
}
 
public V getValue() {
	return this.value;
}
 
public void setValue(V value) {
	this.value = value;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema de referencia, es null

Publicado por Rodrigo (623 intervenciones) el 10/12/2020 13:53:41
Que error exactamente aparece?

Yo creo que el problema lo tienes porque comparas un string (lo que te devuelve e.getMessage() ) con null.
Si este es el problema, tal vez si cambias null por "null" (con comillas), para comparar cosas del mismo tipo.

Posiblemente conviene mas:
- Hacer el hacer un assert ANTES de que produzca la excepcion y nunca invocar add cuando la referencia es null.
o bien
- Hacer assert al tipo de la exception (java.lang.NullPointerException), usando instanceOf
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de referencia, es null

Publicado por Tom (1831 intervenciones) el 10/12/2020 14:17:47
par3.getValue() devuelve null (lo que tú has insertado). Entonces ¿ qué quieres ?. No puedes hacer .add() a un objeto cuya referencia es null ...

Y .. no estoy seguro de que las NPE se capturen en el try-catch.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema de referencia, es null

Publicado por Billy Joel (876 intervenciones) el 10/12/2020 17:49:24
Lo que veo es que haces esto:
1
par3.getValue().add(3.0);

En el momento que haces getValue() te va a devolver un null y a un null no le puedes obtener un valor ni menos agregarle valor.

Cuando creaste el objeto par3 le diste valor al key pero al value le diste null.
Lo que debes hacer es inicializar el valor. Algo como esto:
1
2
par3.setValue(new ArrayList());
par3.getValue().add(3.0);

O cuando creas el objeto par3 inicializarlo con su respectivo valor (ArrayList) así
1
Pair<String, ArrayList<Double>> par3 = new Pair<String, ArrayList<Double>>("Edward", new ArrayList());

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema de referencia, es null

Publicado por Rodrigo (623 intervenciones) el 10/12/2020 20:40:31
Tengo la impresion que el codigo quiere ser un test unitario, aunque no tan bien hecho.
Quiero no creer que se esta controlando el flujo usando las excepciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de referencia, es null

Publicado por Tom (1831 intervenciones) el 10/12/2020 21:34:07
Sí, probablemente sea eso ... pruebas unitarias. En todo caso mejor un simple if().
Se entiende fatal lo que pregunta ¿ Ha hecho alguna pregunta ? ... podría ser que tenga problemas con los import, en java 9 y en javaFx ya existe una clase Pair.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema de referencia, es null

Publicado por Tom (1831 intervenciones) el 10/12/2020 22:00:00
Ah! también podría ser que aquí:
1
Pair<String, ArrayList<Double>> par3 = new Pair<String, ArrayList<Double>>("Edward", null);

al compilador le cueste resolver los tipos genéricos, ya que null es Object, sin más.
Habría que hacer un cast, algo así como:

1
Pair<String, ArrayList<Double>> par3 = new Pair<>("Edu", (ArrayList<Double>)null);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan José
Val: 54
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema de referencia, es null

Publicado por Juan José (20 intervenciones) el 12/12/2020 20:23:02
Hola Tom, mi problema está en que tengo que resolver un test unitario en Junit5, estoy en la universidad y los test nos lo dan hechos, tenemos que resolverlos mediante clases que están semidefinidas. Por tanto, no podemos tocar código que no sea nuestro o que tenga que ser resuelto.
Cuando ejecuto el JUnit esa línea me da errores de referencia ya que es nula.

Mi pregunta es si se puede Solucionar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan José
Val: 54
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema de referencia, es null

Publicado por Juan José (20 intervenciones) el 12/12/2020 20:24:26
Hola Rodrigo, exacto. Es un test unitario. estoy usando JUnit 5. Es un test predefinido por un profesor de universidad. No puedo tocar código y quería saber si se podría solucionar pero parece que no sea así.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema de referencia, es null

Publicado por Rodrigo (623 intervenciones) el 13/12/2020 00:29:44
No es claro para mi cuando dices que devuelve "error desde ArrayList". Es eso un mensaje que aparece?
Sugiero que des mas informacion, si quieres mas ayuda, creo que es un camino mas corto que adivinar lo que falta.
Hay algun enunciado que estas siguiendo? Que es lo que tienes que hacer tu exactamente o que es lo que has hecho tu y que es lo que te han entregado?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar