Cannot invoke "com.example.webcrawler.dto.MakesDto.setMake(String)" because "makesDto[i]" is null

Címkék
Cannot invoke "com.example.webcrawler.dto.MakesDto.setMake(String)" because "makesDto[i]" is null
2022-10-08T12:16:22+02:00
2022-10-08T13:50:17+02:00
2022-10-15T21:20:18+02:00
O.AdamB
Sziasztok!
Itt van az alábbi kód és a címben említett hibát dobja, de nem tudom miért mi lehet az oka?
public MakesDto[] getCarMakes() { String[] alma = carRepository.getCarMakes(); int number = alma.length; MakesDto[] makesDto = new MakesDto[number]; for(int i=0; i<alma.length; i++){ makesDto[i].setMake(alma[i]); } return makesDto; }
Mutasd a teljes hozzászólást!
Amikor azt írod le, hogy

new MakesDto[number]
Akkor azzal foglalsz egy MakesDto tömböt "number" darab elemmel. A tömb minden eleme null lesz, mivel a MakesDto referencia típus. Ezeken a null elemeken ha metódust próbálsz hívni, az NullPointerException-t fog dobni. Ha újonnan foglalt MakesDto példányokra szeretnéd hogy hivatkozzon a tömb, akkor neked kell példányosítanod őket és berakni a tömbbe. Ha a MakesDto-nak van paraméter nélküli konstruktora, akkor például csinálhatsz ilyet:

MakesDto[] makesDto = new MakesDto[number]; for (int i=0; i<makesDto.length; i++) { makesDto[i] = new MakesDto(); }
Mutasd a teljes hozzászólást!

Címkék
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd