Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Motorola propone in fascia media il nuovo Moto G77 5G, uno smartphone che punta sul display AMOLED da 1.5K a 120Hz, e sulla fotocamera da 108 MP con stabilizzazione ottica per affrontare la fascia media. Il tutto insieme a una batteria da 5200mAh in soli 7,3 millimetri di spessore, con una scocca certificata con standard militari
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI ha appena ufficializzato la serie Lito, la sua nuova gamma di droni entry-level destinata a chi si avvicina per la prima volta alla fotografia aerea. Al centro dell'annuncio ci sono due modelli ben distinti per fascia di prezzo e specifiche tecniche: DJI Lito 1 e DJI Lito X1. Entrambi si collocano sotto la soglia regolamentare dei 249 grammi, che permette di volare con requisiti burocratici più semplici rispetto ai droni più pesanti.
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi
Siamo stati a Londra per la premiazione dei Sony World Photography Awards 2026, l'evento a tema fotografia più prestigioso. Fra sorprese e novità, ne approfittiamo per fare il punto sulla fotografia contemporanea, in cui la didascalia è sempre più necessaria a cogliere il senso della quasi totalità degli scatti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-09-2012, 15:09   #1
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5749
[JAVA] ricerca in lista e gerarchia

Ho un problema che non so risolvere in modo elegante.

Ho una piccola gerarchia di classi:
A
B extends A
C extends A

Ho una lista generica che contiene oggetti di tipo A, B e C... quindi Lista<A> lista;

Come posso fare la ricerca di un oggetto di un determinato tipo che voglio?
Cioè se voglio cercare un determinato oggetto di tipo B come devo impostare il metodo??

La mia idea è di:
1) nel metodo chiamante impostare una stringa che contiene il nome della classe dell'oggetto da ricercare.
2) passare la stringa al metodo di ricerca e fare il confronto tra il parametro e il restituito del metodo getClass().getSimplaName(). Se coincidono, allora l'oggetto è del tipo che voglio e posso procedere.
Poi nel chiamante posso fare il cast dell'oggetto estratto al tipo che voglio sapendo che certamente lo è.

Non saprei in che altro modo fare usando, per esempio instanceof..

Mi potete aiutare?
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2012, 16:07   #2
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Con instanceof puoi farcela, tenendo presente che "B instanceof A" ritorna vero, in quanto B estende A anche se non è propriamente di tipo A.
Ecco un codice esempio e l'output che ne deriva. Questo codice ti farà comunque intuire che se hai tante classi o comunque un numero imprecisato di classi che estendono A, formulare le condizioni per verificare se un oggetto è di tipo A potrebbe essere molto complicato.

Codice:
public class Main {
	public static void main (String args[]){
		
		List<A> lista = new ArrayList<A>();
		lista.add(new A());
		lista.add(new B());
		lista.add(new C());
		
		Iterator<A> iter = lista.iterator();
		A obj;
		
		while (iter.hasNext()){
			obj = iter.next();
			System.out.println(obj instanceof A);
			System.out.println(obj instanceof B);
			System.out.println(obj instanceof C);
		}
	}
}
Output:
Codice:
true
false
false
true
true
false
true
false
true
Un metodo probabilmente più valido ai fini pratici è mediante l'uso di getClass():
Codice:
public class Main {
	public static void main (String args[]){
		
		List<A> lista = new ArrayList<A>();
		lista.add(new A());
		lista.add(new B());
		lista.add(new C());
		
		Iterator<A> iter = lista.iterator();
		A obj;
		
		while (iter.hasNext()){
			obj = iter.next();
			System.out.println(obj.getClass() == A.class);
			System.out.println(obj.getClass() == B.class);
			System.out.println(obj.getClass() == C.class);
		}
	}
}
L'output in questo caso è:
Codice:
true
false
false
false
true
false
false
false
true
Come vedi l'uguaglianza tiene conto del subclassamento, quindi a differenza di instanceof, il confronto sarà true solo se avviene tra oggetti di esattamente lo stesso tipo, forse è questo che cerchi.


Detto questo, una citazione di Scott Meyers (un anonimo ) molto carina:
Quote:
"Anytime you find yourself writing code of the form "if the object is of type T1, then do something, but if it's of type T2, then do something else" slap yourself.
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight

Ultima modifica di demos88 : 06-09-2012 alle 16:28.
demos88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico Recensione Moto G77: display AMOLED e buona auto...
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla DJI Lito 1 e Lito X1 recensione: i nuovi droni p...
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi Sony World Photography Awards 2026: i premiati, ...
Una settimana con Hyundai Ioniq 5 N-Line: diverte e convince Una settimana con Hyundai Ioniq 5 N-Line: divert...
Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo Recensione OPPO Find X9 Ultra: è lui il c...
La Cina blocca l'acquisizione di Manus d...
Le batterie al sodio di CATL raggiungono...
Samsung rischia 36 giorni di stop totale...
Huawei annuncia l'arrivo della serie Wat...
L'auto elettrica più veloce del m...
ASUS ha rilasciato il cavo salva-GPU: 50...
TeamViewer Intelligent Agent si rinnova ...
Il conflitto in Iran fa salire i prezzi ...
B05 di Leapmotor in Italia: hatchback el...
Addio app? OpenAI prepara lo smartphone ...
MacBook Air 13" con chip M5 in offerta s...
Un round pre seed da 500mila euro per Va...
Non si butta via niente: Intel fa soldi ...
Cos'è Windows K2: il piano segreto di Mi...
L'attentatore di Trump sviluppava videog...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:04.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v