Kezdőoldal » Számítástechnika » Programozás » Java generikusokkal kapcsolatb...

Java generikusokkal kapcsolatban mi a probléma az alábbi kódban?

Figyelt kérdés

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);


}

}


2011. máj. 4. 07:52
 1/5 anonim válasza:

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.

2011. máj. 4. 14:28
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

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.

2011. máj. 4. 15:42
 3/5 anonim válasza:

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

2011. máj. 4. 17:13
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
Utolsó! Így van. Direkt nem tettem bele, mert csak annyit akartam, hogy lefutás után működjön végre legalább minimumra. Azóta tovább írtam. De már nem foglalkozom, mert lényeg hogy értem miről van szó. Azonban Neked is köszönöm az észrevételed, mert alap, hogy kell bele... Csak miután 1 elemet tettem be mindenképpen és utána 1-et vettem csak ki, nem raktam bele annak ellenőrzését, hogy a "verem" üres-e.
2011. máj. 4. 17:16
 5/5 anonim válasza:
Ne tanuld el az elsőtől, hogy a new operátor segítségével konstruktort "csinálsz". :) Van neki konstruktora, példányosítanod kell az objektumot.
2011. máj. 5. 13:07
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!