PDA

View Full Version : [JAVA] popolare ArrayList, cosa sbaglio?


cloutz
20-03-2012, 21:00
supponendo di avere una classe User così definita:


public class User
{
private Integer id;
private String name;

public User()
{ }

public User(Integer id, String name)
{
this.id=id;
this.name=name;
}

//getter e setter
}



e una classe che fa delle operazioni su una lista di User:

import java.util.ArrayList;

public class ServiceImplementation
{
ArrayList<User> list = new ArrayList<User>();
list.add(new User(1, "pippo"); //errore

//methods
}



perchè la seconda porzione da errore?
cosa mi sfugge?




perchè se faccio l'add all'interno di un metodo, invece, funziona?


public class ServiceImplementation
{
ArrayList<User> list;

public void init()
{
list= new ArrayList<User>();
list.add(new User(1, "pluto"));
}

//methods
}


Grazie :D

[Kendall]
20-03-2012, 22:20
supponendo di avere una classe User così definita:


public class User
{
private Integer id;
private String name;

public User()
{ }

public User(Integer id, String name)
{
this.id=id;
this.name=name;
}

//getter e setter
}



e una classe che fa delle operazioni su una lista di User:

import java.util.ArrayList;

public class ServiceImplementation
{
ArrayList<User> list = new ArrayList<User>();
list.add(new User(1, "pippo"); //errore

//methods
}



perchè la seconda porzione da errore?
cosa mi sfugge?




perchè se faccio l'add all'interno di un metodo, invece, funziona?


public class ServiceImplementation
{
ArrayList<User> list;

public void init()
{
list= new ArrayList<User>();
list.add(new User(1, "pluto"));
}

//methods
}


Grazie :D

Perchè sei all'interno della definizione della classe. In questo "luogo" descrivi le variabili e i metodi (privati o pubblici) che compongono la classe stessa, non puoi effettuare operazioni come quella descritta (che possono stare come giustamente hai notato, solo dentro ai metodi/funzioni come la stessa main è).

cloutz
21-03-2012, 09:36
Ok, ti ringrazio (maledizione, si possono fare errori del genere? :muro: sarà meglio fare una pausa :ciapet: )

Adesso, quell'ArrayList è inserito in un WebService restful (sto usando Eclipse, Jersey e tomcat.. importando le librerie, creando la classe di implementazione e qualche pojo, usando la servlet di jersey nel web.xml mi sembra davvero comodo, sfrutta molto le annotation).


Però:
- Come faccio a fargli inizializzare l'arrayList con i valori presenti (es.:chessò, in un db)?
- Cioè ok, le operazioni sull'arrayList le metto all'interno di un metodo, ma come faccio ad essere sicuro che questo metodo sia eseguito one-time ad ogni chiamata del client?
o, meglio, che sia eseguito solo quando il webservice si avvia? (es.: la connessione al db dovrebbe essere creata quando il webservice si avvia, poi su ogni chiamata del client sfrutto la connessione già esistente)

..il tutto si riassume con:
ci può essere un main nel mio WebService (o qualcosa che possa fare quest'operazione, una servlet, una jsp, non lo so..)?
sul web ho sempre visto creare un ws partendo dalla classe di implementazione, niente main.

Mettiu_
21-03-2012, 12:40
Però:
- Come faccio a fargli inizializzare l'arrayList con i valori presenti (es.:chessò, in un db)?
- Cioè ok, le operazioni sull'arrayList le metto all'interno di un metodo, ma come faccio ad essere sicuro che questo metodo sia eseguito one-time ad ogni chiamata del client?
o, meglio, che sia eseguito solo quando il webservice si avvia? (es.: la connessione al db dovrebbe essere creata quando il webservice si avvia, poi su ogni chiamata del client sfrutto la connessione già esistente)

..il tutto si riassume con:
ci può essere un main nel mio WebService (o qualcosa che possa fare quest'operazione, una servlet, una jsp, non lo so..)?
sul web ho sempre visto creare un ws partendo dalla classe di implementazione, niente main.

Nel costruttore della classe che implementa il WS?