Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo
Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo
Il più recente robot per la pulizia domestica di Dreame, modello Aqua10 Ultra Roller, abbina un potente motore di aspirazione della polvere a un sofisticato sistema di lavaggio con rullo integrato. Il tutto governato dalla logica di intelligenza artificiale, per i migliori risultati
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti
Siamo volati fino a Belfast, capitale dell'Irlanda Del Nord, per scoprire il nuovo Realme 15 Pro 5G Game Of Thrones Limited Edition. Una partnership coi fiocchi, quella tra Realme e HBO, un esercizio di stile davvero ben riuscito. Ma vi raccontiamo tutto nel nostro articolo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
Il Gigabyte Gaming A16 offre un buon equilibrio tra prestazioni e prezzo: con Core i7-13620H e RTX 5060 Laptop garantisce gaming fluido in Full HD/1440p e supporto DLSS 4. Display 165 Hz reattivo, buona autonomia e raffreddamento efficace; peccano però le USB e la qualità cromatica del pannello. Prezzo: circa 1200€.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-12-2014, 15:40   #21
vittorio130881
 
Messaggi: n/a
ecco questo....grazie!
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 16:55   #22
vittorio130881
 
Messaggi: n/a
Errore scusate

Ultima modifica di vittorio130881 : 11-12-2014 alle 18:06.
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 18:49   #23
vittorio130881
 
Messaggi: n/a
Java domanda semplice

Scusate non riesco a scrivere da ipad

Ultima modifica di vittorio130881 : 11-12-2014 alle 18:52.
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 18:55   #24
vittorio130881
 
Messaggi: n/a
errore di scrittura

Ultima modifica di vittorio130881 : 11-12-2014 alle 20:58.
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 18:55   #25
vittorio130881
 
Messaggi: n/a
errore di scrittura

Ultima modifica di vittorio130881 : 11-12-2014 alle 20:58.
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 18:56   #26
vittorio130881
 
Messaggi: n/a
Codice:
public void print(List <? extends Number> list) {
for (Iterator<? extends Number> i = list.iterator(); i.hasNext( ); ) {
System.out.println(i.next());
}

public static void riempiLista(List<? super Integer> list) {
int size = list.size();
for (int i = 1; i <= size; i++) {
list.add(i);
}
System.out.println(list);
}

Inviato dal mio iPad utilizzando Tapatalk
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 19:05   #27
vittorio130881
 
Messaggi: n/a
Domanda il testo dice sul tema generics queste cose

Partendo dal fatto che i parametri di un metodo possono essere di tre tipi:
1.parametro che contiene dati da usare (&ldquo;IN&rdquo; parameter): esempio del metodo print();
2.parametro che deve essere aggiornato (&ldquo;OUT&rdquo; parameter): esempio riempilista

usare upper bounded wildcard per parametri di tipo 1;
usare lower bounded wildcard per parametri di tipo 2;

Perché? sopra troverete l'esempio di upper bound e lower bound. non capisco perchè se devo usare/riempire una list devo usare super invece se devo leggerla/print extends. in particolare avevo letto che i wildcard rendevano di sola lettura i tipi parametrici e quindi come lo si fa a riempire nel riempiLista? grazieee

Ultima modifica di vittorio130881 : 11-12-2014 alle 21:28.
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 20:00   #28
vittorio130881
 
Messaggi: n/a
Chiedo scusa ai moderatori e a tutti voi dei post duplicati....scusate

Ultima modifica di vittorio130881 : 11-12-2014 alle 21:02.
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 22:49   #29
tagan
Member
 
Iscritto dal: Apr 2008
Messaggi: 60
Quote:
Originariamente inviato da vittorio130881 Guarda i messaggi
Domanda il testo dice sul tema generics queste cose

Partendo dal fatto che i parametri di un metodo possono essere di tre tipi:
1.parametro che contiene dati da usare (&ldquo;IN&rdquo; parameter): esempio del metodo print();
2.parametro che deve essere aggiornato (&ldquo;OUT&rdquo; parameter): esempio riempilista

usare upper bounded wildcard per parametri di tipo 1;
usare lower bounded wildcard per parametri di tipo 2;

Perché? sopra troverete l'esempio di upper bound e lower bound. non capisco perchè se devo usare una list devo usare super invece se devo leggerla extends. in particolare avevo letto che i wildcard rendevano di lettura il LISTarray e quindi come lo si riempie? grazieee
boooooooooh!!!!!!!!!
provo a risponderti, ma non ho capito molto cosa intendi

l'upper bounded wildcard cioè la wildcard limitata verso l'alto, significa che posso passare un parametro che è sottoclasse della classe dichiarata.
nell'esempio : print(List <? extends Number> list), accetta solo tipi che sono sottoclassi di Number (Float, Integer, Double, Short)
quindi posso usare un solo metodo per diverse Liste, senza necessariamente crearne una per ogni tipo.

il lower bounded wildcard funziona al contrario. accetta le superclassi di quella dichiarata. nell'esempio che hai riportato, riempiLista(List<? super Integer> list) il parametro che passi deve essere una lista di Integer, oppure una superclasse di Integer, quindi Number..... però genera errore se passi una lista di Float.

sinceramente ho sempre usato extends, mai super.

se dovessi inizializzare una lista con un metodo (modifichiamo il tuo), lo farei in questo modo:
Codice:
public static void riempiLista(List<? super Integer> list) {
    int size = 10;
    for (int i = 1; i <= size; i++) {
        list.add(i);
    }
    System.out.println(list);
}

//per chiamare il metodo
List<Integer> li = new ArrayList<>();
riempiLista(li);
ho cambiato int size = list.size() perché se passo una lista vuota, size = 0 e non verrebbe mai riempita.
anche questo modo, può essere usato per riempire liste di oggetto che sono superclassi di classi definite da te (non considerare Integer, ma pensa a Dipendente , sottoclasse di Persona)
Codice:
public class Persona {
    public String nome;
    public Persona(String nome){
        this.nome=nome;
    }
}

public class Dipendente extends Persona{
    public String ruolo;
    public Dipendente(String nome, String ruolo){
        super(nome);
        this.ruolo=ruolo;
    }
    
    public String toString(){
        return nome+"-"+ruolo;
    }
}

public static void riempiLista(List<? super Dipendente> list) {
    int size = 10;
    for (int i = 1; i <= size; i++) {
        list.add(new Dipendente("pippo",""+i));
    }
    System.out.println(list);
}



List<Persona> lp = new ArrayList<>();
riempiLista(lp);
altra cosa...... se scrivi :
public static void riempiLista(List<Dipendente> list)
il codice
List<Persona> lp = new ArrayList<>();
riempiLista(lp);

genera errore.


comunque, aspettiamo qualche esperto, perché oltre a dirti la differenza tra upper e lower, non capisco il metodo riempiLista scritto in quel modo!

una cosa però si puo dire. nel metodo riempiLista non ci puoi mettere:
riempiLista(List<? extends Number> list)
cosi scritta, il compilatore non riuscirebbe a capire che tipo verrà aggiunto e l'istruzione list.add(i) restituirà un errore.

PS: ma che libro stai studiando?
tagan è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2014, 10:23   #30
vittorio130881
 
Messaggi: n/a
grazie a tagan! e grazie a tutti voi della pazienza
  Rispondi citando il messaggio o parte di esso
Old 15-12-2014, 17:02   #31
vittorio130881
 
Messaggi: n/a
domanda finale sui generics
mi potete dire se ho capito bene?

i generics permettono di evitare i casting ovvero.....

Codice:
ArrayList <Number> list = new ArrayList <Number>();
 list.add(1); list.add(2.0F); list.add(2.0D); list.add(2L); 
Iterator<Number> i = list.iterator(); while(i.hasNext()) 
{ Number n = i.next(); }
non serve fare il cast perchè il compilatore capisce da solo che è number.
invece quest altro codice

Codice:
ArrayList list = new ArrayList();
list.add(1);
list.add(false);
list.add(‘c’);
int intero = (Integer) list.elementAt(0); boolean booleano = (Boolean) list.elementAt(1); character c = (Character) list.elementAt(2);
qui devo usare il cast perchè non cè il generics ma row types.

qualora usassi le wildcard cmq sia devo utilizzare uno stratagemma ovvero il metodo helper perchè il compilatore non capisce che sto usando una lista di stringhe :

Codice:
public class WildCardTest {
void test(List<?> list) {
testHelper(list);
}
//Metodo helper
private <T> void testHelper (List<T> list) { list.set(0, list.get(0)); } }


List<String> param = getArrayListCompleto();
 WildCardTest wct = new WildCardTest();
 wct.test(param);
  Rispondi citando il messaggio o parte di esso
 Rispondi


Dreame Aqua10 Ultra Roller, la pulizia di casa con un rullo Dreame Aqua10 Ultra Roller, la pulizia di casa c...
Recensione Realme 15 Pro Game Of Thrones: un vero cimelio tech per pochi eletti Recensione Realme 15 Pro Game Of Thrones: un ver...
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Lapt...
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Cina, effetto sanzioni USA: Cambricon - ...
La gamma Mac riceverà tante novit...
DDR5 supera i 13.000 MT/s, stavolta uffi...
Il nuovo iPhone con display pieghevole p...
ASUS ProArt PA32KCX: ecco a voi il primo...
DAZN ci riprova: piano Full a meno di 20...
Nuovi prezzi, più bassi: scendono...
PC Desktop HP Victus con RTX 4060 e Ryze...
Giù di altri 10€: solo 939€ per M...
Offerte Amazon da non credere: sconti fo...
Windows 11 scivola sugli aggiornamenti d...
Razer Kiyo V2: la nuova webcam 4K con AI...
ASUS ROG NUC 9: i mini PC (ex) Intel, ad...
Streaming illegale, il ministro dello Sp...
Microsoft avrebbe affidato a Intel la pr...
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: 19:50.


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