Search code examples
javaarraylistsonarqubeserializable

Serializing Sonarqube issue when mebers are java.util.List type


I have define serializable class and it has members of type java.util.List. In sonar it shows error as "Fields in a "Serializable" class should either be transient or serializable"

But actual implementation of those members are ArrayLists, which are serializable.

public class TestDataClass implements Serializable {
    List<String> listMember = new ArrayList();
}

Solution

  • Do make sure to mark the Collection fields as private according to RSPEC-1948:

    This rule raises an issue on non-Serializable fields, and on collection fields when they are not private (because they could be assigned non-Serializable values externally), and when they are assigned non-Serializable types within the class.

    and specify the type instead of using a raw type ArrayList, such as :

    private List<String> listMember = new ArrayList<>(); // notice '<>' for 'ArrayList<String>'