Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-11-2014, 17:10   #1
vittorio130881
 
Messaggi: n/a
Java domanda semplice

Ragazzi ciao oltre all implementazione di un singleton, che ho letto su un libro, a cosa serve dichiarare una variabe di tipo libro (esempio sciocco) all interno della definizione stessa della classe libro? Nel singleton piu o meno lho capito.... ma per il resto a cosa potrebbe servire?
  Rispondi citando il messaggio o parte di esso
Old 27-11-2014, 21:31   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Può essere utile quando devi linkare tra loro gli oggetti. Per seguire il tuo esempio, se il libro fa parte di una collana potresti avere un riferimento al libro precedente e al successivo (otterresti una sorta di lista doppiamente concatenata).
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2014, 09:34   #3
vittorio130881
 
Messaggi: n/a
ok come esempio mi piace
grazie
  Rispondi citando il messaggio o parte di esso
Old 28-11-2014, 10:26   #4
vittorio130881
 
Messaggi: n/a
Pero non cè rischio di creare un loop infinito ovvero cre un libro dentro istanzio il precedente e il successivo ma cosi facendo il precedente istanzia altri due e cosi via.... cone potrei limitare il numero di istanze? Lo trovo pericoloso boh
  Rispondi citando il messaggio o parte di esso
Old 28-11-2014, 12:06   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Se il libro è il primo della collana non ha un precedente, e se è l'ultimo non ha un successivo. Se il libro non fa parte di una collana non ha né il precedente né il successivo. Quindi non c'è un "loop" infinito.
Ovviamente devi programmarlo nel modo giusto. Da quello che dici penso tu abbia immaginato di creare le istanze di libro precedente e successivo nel costruttore di default del libro ma questo è sbagliato proprio perché vai a creare un "loop" infinito.
Un modo corretto è far creare i vari libri ad un modulo (resto sul vago di proposito) esterno al costruttore che si occuperà anche di concatenarli.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2014, 14:41   #6
vittorio130881
 
Messaggi: n/a
Grazie!
  Rispondi citando il messaggio o parte di esso
Old 01-12-2014, 14:11   #7
vittorio130881
 
Messaggi: n/a
DOMANDA

domanda ulteriore!!!!

se io ho una classe B che estende una classe A facendo ovverride di un metodo accelera() public.

nell'override di accelera ho fatto uso del metodo accelera della classe A mediante la parola chiave super.
tipo quando si fa il tostring e si prende il super.tostring + 'altro testo sottoclasse'.

fin qui tutto chiaro. quando però istanzio una classe B tipo
B pippo=new B();
quando faccio pippo.accelera chiamo il metodo di cui ho fatto l'override....ma dico una cavolata.....posso scrivere pippo.super.accelera ???
o avendo fatto l'override il metodo oramai da chiamare con una istanza pippo è per forza quello della classe B?
avrei tanto per capirci dovuto istanziare una classe A e usare pluto.accelera...... o al limite non fare l'override di quel metodo ma crearne uno nuovo in b cosi da ereditarlo senza modifiche.....scusate in anticipo se bestemmio
  Rispondi citando il messaggio o parte di esso
Old 01-12-2014, 19:33   #8
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
La seconda che hai detto. Nel momento in cui nascondi un metodo della superclasse facendone l'override, questo non è più visible dall'esterno.

La parola chiave super può essere utilizzata solo dove è possibile utilizzare la parola chiave this, in particolare: nei metodi di istanza, negli inizializzatori d'istanza, nei costruttori e negli inizializzatori di variabili d'istanza. Fonte: http://docs.oracle.com/javase/specs/...ml#jls-15.11.2
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2014, 07:43   #9
vittorio130881
 
Messaggi: n/a
gazie wingman!
  Rispondi citando il messaggio o parte di esso
Old 02-12-2014, 08:01   #10
vittorio130881
 
Messaggi: n/a
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
La seconda che hai detto. Nel momento in cui nascondi un metodo della superclasse facendone l'override, questo non è più visible dall'esterno.

La parola chiave super può essere utilizzata solo dove è possibile utilizzare la parola chiave this, in particolare: nei metodi di istanza, negli inizializzatori d'istanza, nei costruttori e negli inizializzatori di variabili d'istanza. Fonte: http://docs.oracle.com/javase/specs/...ml#jls-15.11.2
dici non visibile all'esterno per le istanze della classe B ma per le istanze della classe A rimane accessbile spero!?

Ultima modifica di vittorio130881 : 02-12-2014 alle 08:04.
  Rispondi citando il messaggio o parte di esso
Old 02-12-2014, 08:25   #11
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Sì sì l'avevo dato per scontato
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2014, 08:32   #12
vittorio130881
 
Messaggi: n/a
ok

scusa wing dato che ci sto continuo a fare domandine.........

sto leggendo di SUPPRESSED del try with resources
ovvero le eccezioni lanciate durante la chiusura automatica degli oggetti (tipo connection) vengono soppresse a scapito di una eccezione avvenuta per esempio causa problemi di connessione........

ma vengono soppresse e quindi? chiuse lo stesso? e poi getsuppressed che roba è? dice il libro "lutilizzo di getsuppressed è permesso utilizznado le classi che implementano le interfacce closable........" arabo

wingman se sto parlando di cose che possono aspettare (magari si studiano dopo con jdbc) e non sono utili dimmelo che vado avanti.......sto alle eccezioni che per ora mi risultano chiare tranne questo
  Rispondi citando il messaggio o parte di esso
Old 02-12-2014, 10:10   #13
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Allora, premetto che non sono espertissimo dell'argomento perché in java non ho mai usato questa istruzione però leggendo la documentazione mi sembra abbastanza chiaro.
Da qui: http://docs.oracle.com/javase/tutori...urceClose.html

Dentro al blocco try potrebbe verificarsi un'eccezione, nel caso ciò avvenga (anche nel caso ciò non avvenga, ma poniamoci in questo caso speciale), verrà chiamato il metodo close dell'oggetto specificato nel try-with. Nel caso in cui il metodo close lanci un'eccezione, ti troverai nella situazione in cui sono state lanciate in sequenza due eccezioni e nel catch la jvm deve fare una scelta, cioè deve decidere quale eccezione viene "catchata". Per specifica, è stato deciso che l'eccezione "catchata" è la prima, quella che è stata lanciata nel blocco, l'altra però è sempre accessibile tramite il metodo getSuppressed dell'eccezione catchata.
In realtà getSuppressed ti restituirà una lista di eccezioni soppresse perché potresti trovarti in una serie di blocchi try-with annidati e per ognuno degli oggetti su cui viene chiamato close potrebbe venire lanciata un'eccezione.

Riguardo al fatto se la risorsa viene chiusa o meno... dipende da dove è andato in eccezione il metodo close perché è lui il responsabile di quell'operazione, ma direi che una volta che l'hai chiamato il tuo lavoro di programmatore dovrebbe essere finito a meno che non hai scritto tu il metodo close o se hai utilizzato male il framework che stai utilizzando...
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 02-12-2014, 10:34   #14
vittorio130881
 
Messaggi: n/a
grazie
  Rispondi citando il messaggio o parte di esso
Old 04-12-2014, 16:21   #15
vittorio130881
 
Messaggi: n/a
altra domandina

sulle asserzioni
dato questo codice

Codice:
“static {
boolean assertsEnabled = false;
assert assertsEnabled = true;
if (!assertsEnabled)
throw new RuntimeException("Asserts must be enabled!"); }”

il testo dice:
il blocco prima inizializza la variabile assertEnabled a false per poi cambiare il suo valore a true se le asserzioni sono abilitate. se non lo sono lancia un runtime exception


mah io sinceramente non vedo quello....vedo una verifica tramite assert della variabile che essendo falsa (dichiarata tale all0inizio) lancia un avvertimento....sbaglio?
anzi la parte
if (!asser......
mi sembra che non verrà mai eseguita visto che è false di partenza e già l'asserzione lo individua....mi aiutate? grazie!
  Rispondi citando il messaggio o parte di esso
Old 04-12-2014, 16:50   #16
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Se guardi bene l'espressione dopo l'assert puoi notare che non è un confronto ma un'assegnazione. Dopo l'assegnazione il valore dell'espressione è quello assegnato alla variabile e quindi true. Quindi se l'assert è abilitato effettuerà l'assegnazione, se invece non è abilitato l'assegnazione non avrà luogo e andrà in eccezione per via dell'if.

Sono interessanti le tue domande
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2014, 09:04   #17
vittorio130881
 
Messaggi: n/a
Hahaha grazie. Spero che le mie domande possano servire ad altri e che siano stimolanti per chi è già esperto.

Wingman sei grandissimo! Non avevo notato uguale come assegnazione....

Continuerò allora tanto qualcosa mi sfuggirà sicuramente.
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 15:02   #18
vittorio130881
 
Messaggi: n/a
altra domanda come previsto

Codice:
public void print(ArrayList<?> al) {
Iterator<?> i = al.iterator();
while (i.hasNext()) {
Object o = i.next();
System.out.println(o);
}
}
ho chiaro il concetto di wildcard in ottica di raw type. mi piace e la trovo utile. però mi è venuto un quesito in mente che non c'entra con i generics.....usando println su o dove o è un object in pratica si sta utilizzando il tostring che arraylist ha fatto come ovverride su object? quindi un metodo virtuale?
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 15:15   #19
vittorio130881
 
Messaggi: n/a
no... credo di aver capito....chiama il tostring degli elementi di arraylist ...
  Rispondi citando il messaggio o parte di esso
Old 11-12-2014, 15:24   #20
tagan
Member
 
Iscritto dal: Apr 2008
Messaggi: 60
Quote:
Originariamente inviato da vittorio130881 Guarda i messaggi
altra domanda come previsto

Codice:
public void print(ArrayList<?> al) {
Iterator<?> i = al.iterator();
while (i.hasNext()) {
Object o = i.next();
System.out.println(o);
}
}
ho chiaro il concetto di wildcard in ottica di raw type. mi piace e la trovo utile. però mi è venuto un quesito in mente che non c'entra con i generics.....usando println su o dove o è un object in pratica si sta utilizzando il tostring che arraylist ha fatto come ovverride su object? quindi un metodo virtuale?

non ho capito.....
comunque.
se hai una classe
Codice:
public class MiaClasse {
    public String stringa1;
    public String stringa2;
    
    public String toString(){
        return "Override di toString : "+stringa1+"-"+stringa2;
    }
}

....
        ArrayList<MiaClasse> arrl = new ArrayList<>();
        MiaClasse m1 = new MiaClasse();
        m1.stringa1="valoreDiStringa1";
        m1.stringa2="valoreDiStringa2";
        arrl.add(m1);
        MiaClasse m2 = new MiaClasse();
        m2.stringa1="valoreDiStringa3";
        m2.stringa2="valoreDiStringa4";
        arrl.add(m2);
        
        print(arrl);
il tuo esempio ti scrive:
Codice:
Override di toString : valoreDiStringa1-valoreDiStringa2
Override di toString : valoreDiStringa3-valoreDiStringa4
cioè usi il toString della classe/oggetto contenuto nell'ArrayList.
tagan è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
iPhone 18 Pro disponibile su Amazon a 1....
ECOVACS T90 OMNI a 439€ e T90 MAX OMNI a...
Questa Proscenic è la scopa elett...
Microsoft Defender: falso allarme sull'a...
Aerei in volo e truppe pronte all'assalt...
Usano Claude per hackerare OpenAI: ricer...
RatHat: il nuovo malware Android usa il ...
Domanda di petrolio in calo di 2,5 milio...
Il meglio delle offerte weekend Amazon a...
Dopo oltre 100 anni di tentativi, l'IA d...
Speciale robot aspirapolvere in offerta ...
L'IA sta cancellando i lavori junior? Il...
Debutta Chery Italia: non più sol...
Addio ai dischi? Xbox ci aveva già...
Speciale TV Amazon: 4 modelli, da 139€ f...
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: 09:21.


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