|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
[Java] Oggetti fittizi
Ho ad esempio un oggetto jcombobox contenente un vector<palline>,
ora in questa lista associata ad una pallina (ha unn nome), vorrei inserire un oggetto fittizio del tipo "tutte le palline" o "nessuna pallina". Quale è il modo migliore per procedere? Se considero questi ultimi due oggetti come palline fittizie, mi precludo la possibilità che esistano palline che si chiamino "tutte le palline" etc.. Spero sia chiaro il concetto al di là delle palline
__________________
Ciao ~ZeRO sTrEsS~ |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Puoi usare due istanze uniche dal significato convenzionale, come in:
Codice:
public class Pallina {
public static final Pallina NESSUNA = new Pallina();
public static final Pallina TUTTE = new Pallina();
...eccetera
}
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Quote:
oddio mi hai fatto morire |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Pallina ha come attributi nome,rimbalzi, l'equals è stato sovrascritto basandosi sull'uguaglianza di questi due valori ed il tostring mi ritorna il nome.
Ora, volendo utilizzare le istanze uniche ed assegnandoci come nome rispettivamente "tutte le palline" e "nessuna pallina", se ho riscritto il metodo equals secondo quanto sopra, mi precludo dall'esistenza di una reale pallina a avente nome "tutte le palline" etc. Non ti preoccupare PGI-Bis , ti è concesso dire qualsiasi castroneria possibile
__________________
Ciao ~ZeRO sTrEsS~ |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Puoi creare due sottoclassi per ridefinire i comportamenti che una normale pallina avrebbe ma che NONE e ALL non possono avere in quanto valori speciali.
Codice:
public class Pallina {
public static final Pallina NONE = new Pallina(null) {
public String getName() { return null; }
public int getRimbalzi() { return 0; }
public int hashCode() { return System.identityHashCode(this); }
public boolean equals(Object that) { return that instanceof Pallina && that == this; }
};
}
Ciò premesso, non è che a te interessa semplicemente mettere nelle casella combinata due stringhe "NESSUNO" e "TUTTO" per la selezione? Se così fosse allora puoi creare un ComboBoxModel che ha sempre e comunque due stringhe in testa, vale a dire per getElementAt(0) restituisce "NESSUNO" e per getElementAt(1) restituisce "TUTTI". Un po' come i filtri automatici in Access o Excel per intenderci. TUTTI e NESSUNO si dinstinguono dalla Pallina "TUTTO" e dalla Pallina "NESSUNO" per essere Stringhe e non palline. Nota che questo non impedisce di usare una List<Palline> per il modello della ComboBox. Quando l'utente seleziona un elemento di indice maggiore di 1 devi semplicemente ricordarti di togliere 1 prima di accedere all'elemento Pallina della lista.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 1451
|
Già, hai fatto centro sulla finalità della cosa.
Effettivamente, la soluzione che proponi è semplice e pulita, e non faccio troppi giri con la classe. Grazie mille
__________________
Ciao ~ZeRO sTrEsS~ |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:48.




















