Newsgroup: it.comp.java
Titolo: domanda facile facile...

Ho una classe che contiene una variabile di tipo HashMap.
Utilizzo questa classe per istanziare un'oggetto che vado poi a salvare come 
elemento di una lista.
con un get() sulla lista recupero l'oggetto da un'altra classe.
posso lavorare sulla variabile HasmMap appartenente all'oggetto che ho 
estratto dalla lista?
Più che altro mi occorre la possibilità di modificare la variabile di quel 
determinato oggetto.
Con i tipi di dato primitivi posso farlo, in questo caso come faccio??
Grazie per l'attenzione
Saluti
Mazzoli Francesco Saverio 

 Utilizzo questa classe per istanziare un'oggetto che vado poi a salvare
come
Il testo e' poco chiaro, ad esempio questa riga
Se non ti risponde comunque qualche bravo enigmista,
prova a riformulare usando uno stile :
la Classe A
conetiene
.....
MyClass B = new Myclass()
Map c= new Hashmap()
.....
eccc come si fa di solito ai quiz
ciao Nicola
..
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha
scritto:

          Beh.. credo ti basti fare il casting esplicito dell'oggetto dopo il get() e
poi lavorarci. Nel caso in cui tu non stia usando stringhe (o tipi
primitivi) non sarà necessario nemmeno fare il set() al termine perche'
starai lavorando direttamento sull'oggetto ricevuto per referenza.
..sempre che abbia capito bene cosa ti serve...
Ciao


 Con i tipi di dato primitivi posso farlo, in questo caso come faccio??
La domanda non è chiara per nulla.
In ogni modo l'accesso agli oggetti avviene sempre per reference, motivo 
per cui ovunque tu referenzi un oggetto (sia assegnandolo ad una 
variabile, sia aggiungendolo ad una o più collection) hai sempre il 
riferimento alla stessa istanza.

 ha scritto nel messaggio 
news:d89dtd$7mg$1...@le1.cs.unibo.it...

Allora mi spiego meglio.
Ho una classe A che contiene
HashMap miaMappa = new HashMap();
questa classe dispone di 2 metodi per lavorare sulla miaMappa: add get.
I metodi sono implementati utilizzando i metodi forniti dalla classe 
HashMap, per l'esattezza put() e get().
creo un oggetto di tipo A associandolo ad un reference
A ogg = new A();
inserisco ogg in una lista (List)
Adesso, da una classe x ho la necessità di estrapolare gli elementi di 
questa lista (oggetti di tipo A) e apportare modifiche alla variabile mia
Mappa degli stessi
A oggTemporaneo = (A)mialista.get(i)
Su oggTemporaneo posso lavorarci con i metodi implementati nella classe A ma 
io vorrei poter modificare la miaMappa dell'oggetto.
Potrei utilizzare i metodi di A, ma questi lanciano alcune eccezioni. Ad 
esempio
oggTemporaneo.get("ciao");
lancia un'eccezione se la stringa "ciao" non esiste nelle chiavi della 
miaMappa dell'oggetto.
nella classe x che va ad analizzare questa eccezione non mi serve, vorrei 
poter fare un semplice
oggTemporaneo.miaMappa.containsKey("ciao");
e magari inserirlo in un if in questo modo
if(oggTemporaneo.miaMappa.containsKey("ciao"){
oggTemporaneo.miaMappa.get("ciao");
}
Purtroppo è questo oggTemporaneo.miaMappa.metodi_della_classe_HashMap che 
non mi funziona.
Sono costretto ad inserire il codice della classe x in un blocco try{}catch 
che mi funge da if
se è tutto ok -> fai questo
se viene lanciata un'eccezione -> fai quest'altro
adesso è più chiaro??
soluzioni?
grazie per l'attenzione
saluti
Mazzoli Francesco Saverio 

 miaMappa dell'oggetto.
QUESTA NON E' UNA SOLUZIONE, E' UNA PATCH SCHIFOSA, NEGHERO' FINO ALLA
FINE DEI MEI GIORNI DI AVERLA PROPOSTA :)
  public Object get(String key) {
    Object ret = null;
    try {
      ret = miaMappa.get(key)
    } catch (Exception e) {
      // ignored
    }
    return ret;
  }
Ma forse dovresti analizzare il perche' dell'exception, dato che secondo
la documentazione del metodo get() di HashMap, nel caso la key non
esiste dovrebbe ritornarti null.
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !

 miaMappa dell'oggetto.
Sei *sicuro*? Quale eccezione viene scatenata?
HashMap non scatena nessuna eccezione se l'elemento non esiste. Il 
problema è certamente altrove (e lo risolvi altrove).
Non è che si scatena una eccezione (NullPointerException) se 
oggTemporaneo è null, cioè se non esiste nella lista precedente?

 } catch (Exception e) {
Noooo per cortesia manco per scherzo !
Nicola


 Noooo per cortesia manco per scherzo !
Chi ha scritto quel codice ?! VERGOGNA :) !!


 ha scritto nel messaggio 
news:d8bb61$lh2$1...@area.cu.mi.it...

Forse ancora non ci siamo.
Nella classe principale A, quella che utilizzo per instanziare un oggetto di 
tipo A, il costruttore prevede l'iniziazializzazione di una variabile di 
tipo HashMap già dichiarata.
HashMap miaMappa;
// costruttore senza parametri
public A(){
miaMappa = new HashMap();
}
la classe mette A mette a disposizione 2 metodi, add() e get(), che sono i 
seguenti
public void add(String chiave, mioOggetto valore) {
miaMappa.put(chiave, valore);
}
public mioOggetto get(String nome) throws MiaException {
if(miaMappa.containsKey(name)) {
return (mioOggetto)miaMappa.get(name);
} throw new MiaException("ERRORE");
}
Quindi l'eccezione non è lanciata dal metodo get della classe HashMap (che 
effettivamente restituisce null in caso di assenza della chiave) ma dal 
metodo get della classe A che vi chiedo se è l'unico modo che ho a 
disposizione per modificare la HashMap appartenente all'oggetto.
Nella classe B (qui non devo restituire eccezioni) vorrei creare un metodo 
che mi dice se una chiave esiste o meno nella HashMap dell'ambiente, una 
cosa di questo tipo
A oggetto = new A();
// è un esempio, nella realtà oggetto è ricavato
// da una lista di oggetti di tipo A, leggete i miei post precedenti
if(oggetto.miaMappa.containsKey("ciao")){
return true
}
else{
return false
}
ma mi da un errore il (oggetto.miaMappa.containsKey("ciao")) e non so come 
risolvere l'inconveniente, sono costretto a fare una cosa come quella 
suggerita da Giambo che anche a me non piace e da quel che leggo neanche a 
voi entusiasma più di tanto. Una cosa tipo
A oggetto = new A();
try{
oggetto.get("ciao");
}
catch (MiaException exc){
return false
}
return true
suggerimenti?
saluti
Mazzoli Francesco Saverio 

 return true
suggerimenti?
Scusate, ho postato veloce e c'erano dei piccoli errori, questo è il post 
corretto.
saluti
Mazzoli Francesco Saverio

 saluti
E' difficile dare suggerimenti senza una visione globale di quello che
vorresti fare.


 vorresti fare.
Hai centrato perfettamente quello che vorrei fare...
saluti
Mazzoli Francesco Saverio 

 meno modificarla dall'esterno.
Hmmm ... mi sembra un design un po' contorto ...
