Pola w klasie „Serializowalne” powinny być przejściowe lub możliwe do serializacji, aby naprawić dowolną jednostkę / klasę używaną w innej klasie, ale dzieje się tak, gdy Lista / Mapa jest zadeklarowana w klasie dto, której nie można nawet uczynić tak przejściowymi, jak dobrze. daj mi znać, jak to naprawić.

Dawny:

public class CustomMetadataDTO implements Serializable {

private UUID id;

private Map<String, Object> metadata = new HashMap<>();

private UUID fieldGroupId;

private Integer order;


public CustomMetadataDTO(Map<String, Object> metadata, Integer order) {
    this.metadata = metadata;
    this.order = order;
}

public CustomMetadataDTO() {
}}

Dla poniższej linii problem sonarqube jest krytyczny

private Map<String, Object> metadata = new HashMap<>();

enter image description here

0
Thomson Ignesious 20 listopad 2019, 10:29
1
 – 
Kavitha Karunakaran
20 listopad 2019, 10:32
1
Obiekty przechowywane w mapie nie są możliwe do serializacji, należy przynajmniej ustawić typ zamiast Object na Serializable.
 – 
Slimu
20 listopad 2019, 10:38

1 odpowiedź

HashMap można serializować, ale Map nie jest, ponieważ nie implementuje interfejsu Serializable. Możesz spróbować użyć samego HashMap podczas deklarowania (niezalecane).

private HashMap<String, Object> metadata = new HashMap<>();
1
Jerin D Joy 21 listopad 2019, 09:24