java.lang.NullPointerException: null, I can not enter values into a class with an array of objects

0

hi I need to enter these values of different arraylist within a class to build a REST service, but it does not allow me to use object arrays to insert these values in my class so I do not want to be declaring "n" instances of my class to enter the data: AND I GET THE FOLLOWING ERROR

  

(: Servlet.service () for servlet   [operations.ups.edu.ec.finalproject.config.JerseyCo nfig] in context   with path [] threw exception [java.lang.NullPointerException] with   root cause

     

java.lang.NullPointerException: null           at operations.ups.edu.ec.finalproject.repository.imp.CoordinatesRepositoryValues.getCoordinates (CoordinatesRepositoryValues.java:32)   ~ [classes! /: 0.0.1-SNAPSHOT])

here my classes

CLASS OF WHOM I WISH TO GENERATE MICROSERVICE

public class Coordinates {
    int pointId;
    String longitud;
    String latitud;
    double distanceKm;
    boolean statusCalc;

    public Coordinates(){}

    public int getPointId() {
        return pointId;
    }

    public String getLongitud() {
        return longitud;
    }

    public String getLatitud() {
        return latitud;
    }

    public double getDistanceKm() {
        return distanceKm;
    }

    public boolean isStatusCalc() {
        return statusCalc;
    }


    public static class Builder{
        Coordinates coordinates= new Coordinates();

        public Builder pointId(int val){
            this.coordinates.pointId= val;
            return this;
        }

        public Builder longitud (String val){
            this.coordinates.longitud= val;
            return this;
        }

        public Builder latitud (String val){
            this.coordinates.latitud= val;
            return this;
        }

        public Builder distanceKm  (double val){
            this.coordinates.distanceKm= val;
            return this;
        }

        public Builder statusCalc (boolean val){
            this.coordinates.statusCalc= val;
            return this;
        }

        public Coordinates build() {
            return this.coordinates;
        }
    }
}

CLASE DONDE SE SE ENCUENTRAN LOS VALORES QUE DESEO INSERTAR 


@Service
public class CoordinatesPointsValuesRepository {


    public List id(){
        List <Integer> id = new ArrayList<Integer>();
        id.add(1);
        id.add(2);
        id.add(3);
        id.add(4);

        return id;
    }
    public List Longitud(){
        List <String> longitud = new ArrayList<String>();
        longitud.add("234567");
        longitud.add("345678");
        longitud.add("6543");
        longitud.add("54322");

        return longitud;
    }

    public List Latitud(){
        List <String> latitud = new ArrayList<String>();
        latitud.add("234asdN");
        latitud.add("345678SE");
        latitud.add("65OE43");
        latitud.add("54NE322");

        return latitud;
    }
    public List distanceKm(){
        List <Double> distanceKm= new ArrayList<Double>();
        distanceKm.add(12.3);
        distanceKm.add(2.2);
        distanceKm.add(5.5);
        distanceKm.add(8.0);

        return distanceKm;
    }
}



CLASE QUE SE ENCARGA DE CARGAR LOS VALORES EN MI LA CLASE DE LA CUAL SE DESEA GENERAR EL MICROSERVICIO

package operations.ups.edu.ec.finalproject.repository.imp;

import operations.ups.edu.ec.finalproject.domain.Coordinates;
import operations.ups.edu.ec.finalproject.repository.CoordinatesRepository;
import operations.ups.edu.ec.finalproject.repository.maper.CoordinatesPointsValuesRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;

@Repository
public class CoordinatesRepositoryValues implements CoordinatesRepository {

    Coordinates.Builder [] coordinatesBuild = new Coordinates.Builder[4];
    CoordinatesPointsValuesRepository coordinatesPointsValuesRepository = new CoordinatesPointsValuesRepository();

    @Autowired
    public CoordinatesRepositoryValues(){
    }

    @Override
    public List<Coordinates> getCoordinates () {
        List<Coordinates> setCoordinates = new ArrayList<Coordinates>();
        List<Integer>getPointID   = this.coordinatesPointsValuesRepository.id();
        List<String>getLatitud    = this.coordinatesPointsValuesRepository.Latitud();
        List<String>getLongitud   = this.coordinatesPointsValuesRepository.Longitud();
        List<Double>getDistanceKm = this.coordinatesPointsValuesRepository.distanceKm();


        for(int i=0 ; i <coordinatesBuild.length ; i++){
            coordinatesBuild[i].pointId(getPointID.get(i));
            coordinatesBuild[i].latitud(getLatitud.get(i));
            coordinatesBuild[i].longitud(getLongitud.get(i));
            coordinatesBuild[i].distanceKm(getDistanceKm.get(i));
            coordinatesBuild[i].statusCalc(true);
            setCoordinates.add(coordinatesBuild[i].build());
        }
        return setCoordinates;
    }
}
    
asked by Boris Raul Cutos 23.07.2018 в 04:57
source

1 answer

0

The arrays only instantiate the Array object, they do not instantiate each instance of them, so your problem is that

 Coordinates.Builder [] coordinatesBuild = new Coordinates.Builder[4];

Each of its elements are never instantiated

To do it in this iteration do the following:

for(int i=0 ; i <coordinatesBuild.length ; i++){
        coordinatesBuild[i] = new Coordinates.Builder();
        coordinatesBuild[i].pointId(getPointID.get(i));
        coordinatesBuild[i].latitud(getLatitud.get(i));
        coordinatesBuild[i].longitud(getLongitud.get(i));
        coordinatesBuild[i].distanceKm(getDistanceKm.get(i));
        coordinatesBuild[i].statusCalc(true);
        setCoordinates.add(coordinatesBuild[i].build());
}
    
answered by 23.07.2018 / 05:54
source