Java generikusokkal kapcsolatban mi a probléma az alábbi kódban?
Nincs semmiféle ellenőrzés azt tekintve, hogy elemkivételnél van-e még a listában elem vagy sincs. Más ellenőrzések és egyéb metódusok is hiányoznak. Ez csak egy kis "kezdet", pont annyi, hogy lehessen belőle látni a generikusok működését. Legalábbis egyik részének működését. A probléma annyi, hogy lefutni lefut a program, de indítás után NullPointerException kivételt dob, amikor bekapkolni a main-en belül az elemet a listába.
A kód:
import java.util.*;
public class Generikus<T>{
private ArrayList<T> lista;
public void betesz(T elem){
lista.add(elem);
}
public T kivesz(){
T legfelsoElem = lista.get(lista.size()-1);
lista.remove(legfelsoElem);
return legfelsoElem;
}
public static void main(String[] args){
Generikus<String> g = new Generikus<String>();
g.betesz("szia");
String kivettElem = g.kivesz();
System.out.println(kivettElem);
}
}
Jah, nyilván elszáll.
private ArrayList<T> lista; mivel ez null lesz mindig sehol nem lesz objektum.
csinálja neki konstruktort
public Generikus() {
lista=new ArrayList<T>();
}
Így menni fog.
használj eclipset abban van debugger.
Szia!
Köszönöm szépen, igaz még nem próbáltam ki, de 100, hogy igazad van. Az a baj, hogy vagy 10szer gondoltam, hogy létrehozok konstruktort, de bennem volt, hogy az automatikusan úgy is létrejön, csak ugyebár nem mindegy, hogy hogyan. Hülye voltam, hogy inicializálás nélkül próbáltam egy listába elemet tenni. Kösz mégegyszer a segítséget.
public T kivesz(){
if(lista.size==0)
return null;
T legfelsoElem = lista.get(lista.size()-1);
lista.remove(legfelsoElem);
return legfelsoElem;
}
ebbe tennék egy if-t
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!