Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Dopo due settimane trascorse al volante della Dacia Spring 2026 possiamo raccontarvi tutto, dalle novità di motore e batteria, fino ai consumi in tutti le situazioni, compresa l'autonomia reale ad alta velocità
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre
Abbiamo messo alla prova la nuova AORUS GeForce RTX 5080 INFINITY WOOD 16G, una delle interpretazioni più particolari della GPU NVIDIA Blackwell. Prestazioni, frequenze operative, temperature, consumi e margini di overclock sono stati confrontati con altre RTX 5080 custom e con la Founders Edition. Il design in legno è solo uno degli elementi distintivi di una scheda che punta a ritagliarsi uno spazio nella fascia più alta del mercato.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-06-2006, 07:48   #1
aria1984
Member
 
Iscritto dal: Aug 2005
Messaggi: 166
[java] costrutto this e chiamata a metodi

ciao a tutti....ho due domande....
1 a cosa serve this?
2 come si fa a chiamare un metodo di una classe in un altro metodo della stessa classe?
grazie
ps sn una studentessa di elettronica...cercate di spiegare in maniera comprensibilissima per un'ignorante in materia...
grazie a tutti.
__________________
vieni su IN ARIA... animazioni, sfondi desktop, template per Splinder realizzati da me... Fai la tua richiesta grafica GRATIS!
aria1984 è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 08:35   #2
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da aria1984
ciao a tutti....ho due domande....
1 a cosa serve this?
2 come si fa a chiamare un metodo di una classe in un altro metodo della stessa classe?
grazie
ps sn una studentessa di elettronica...cercate di spiegare in maniera comprensibilissima per un'ignorante in materia...
grazie a tutti.
this serve a referenziare l'oggetto in cui stai lavorando.
esempio

nel tua classe dichiari una variabile di classe
Codice:
int pippo = 1;
.

poi fai un metodo
Codice:
public void metodo1(int pippo)
{
     system.out.println(pippo);
     system.out.println(this.pippo);
}
la prima chiamata restituira il valore della variabile pippo passata come parametro.
la seconda chiamata restituirà il valore della variabile pippo di classe.


altro esempio
fai una classe di nome pluto.

al suo interno fai un metodo che restituisce l'oggetto stesso

Codice:
Pluto pluto = new Pluto();
Pluto pluto2 = pluto.getThis();

pluto == pluto2;

l'implementazione di getThis è
Codice:
public Pluto getThis()
{
    return this;
}
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 08-06-2006, 12:28   #3
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Secondo le regole del linguaggio Java, le espressioni di accesso ad un membro di istanza (campi, metodi, tipi interni non annidati) necessitano di un riferimento su cui operare.

la parola chiave this (unqualified this) si riferisce ad un campo terminale il cui valore è l'istanza corrente della classe in cui compaia la parola chiave. Ha una doppia forma, qualificata e non qualificata. La forma qualificata è:

NomeClasse.this

e la non qualificata è:

this

La seconda è una semplificazione della prima ed il significato è determinato dal contesto. Il contesto determina anche la necessità d'uso della forma qualificata.

Fuor di specifiche, la cosa è molto più semplicemente descrivibile con un: this significa "sè stesso" (molti linguaggio usano self al posto di this come parola chiave per indicare lo stesso fenomeno).

Se invochi un metodo o accedi ad un campo devi sempre indicare il "proprietario" di quel metodo o di quel campo, anche quando l'invocazione o l'accesso siano richiesti dallo stesso oggetto che possiede il metodo invocato o il campo acceduto. Così un ipotetico Pippo:

Codice:
public class Pippo {

    public String getParola() {
        return "Ciao!";
    }

    public void stampaLaTuaParola() {
        String parola = this.getParola();
        System.out.println(parola);
    }
}
volendo stampare il risultato di un metodo che pure sa di possedere deve comunque indicare che egli stesso è il possessore del metodo (getParola) che desidera invocare.

La particolare (presunta) frequenza con cui avvengono le "invocazioni a sè stesso" ha suggerito ai progettisti di Java l'omissibilità della parola chiave this.

Si tratta di una "cattiveria logica" perchè introduce un'eccezione alla regola dell'esplicita indicazione del riferimento per le espressioni d'accesso a membri di istanza che recita:

l'espressione di accesso ai membri di un'istanza inizia sempre con il nome della variabile che contiene il riferimento all'istanza che possiede il membro acceduto a meno che il membro acceduto non sia dichiarato nella stessa definizione di classe in cui avviene l'accesso o in un super tipo di quella classe: in questo caso il nome della variabile riferimento può essere omesso ed è implicitamente sostituito dalla parola chiave this.

Visto che si può omettere, ha senso averlo questo "this"?. Si, almeno in un caso.

I programmatori hanno grande fantasia ma a tutto c'è un limite. In particolare i nomi delle cose tendono ad esaurirsi in fretta oppure a volte proprio non viene in mente null'altro o, ancora, capita che si scontrino fantasie coincidenti.

Supponiamo di avere un mezzo-Pippo così fatto:

Codice:
public class Pippo {
    private int quantità;
}
A questo Pippo aggiungiamo un metodo per impostare il valore del campo quantità:

Codice:
public class Pippo {
    private int quantità;

    public void setQuantità(int quantità) {
Ora abbiamo un problema di conflitto di nomi: nel corpo del metodo setQuantità, il nome del parametro intero (quantità) adombra il nome del campo omonimo delle istanze di Pippo (quantità).

Qui emerge la differenza tra l'accesso ad un campo di istanza e l'accesso ad un parametro: entro l'ambito delle rispettive dichiarazioni di nome, il primo è fatto sempre attraverso un riferimento, il secondo sempre attraverso il nome del parametro. Ecco allora che a risolvere l'arcano basta rendere esplicito l'implicito:

Codice:
public class Pippo {
    private int quantità;

    public void setQuantità(int quantità) {
        this.quantità = quantità;
    }
}
this.quantità è accesso ad un campo, lo sappiamo perchè prima del nome semplice del campo vediamo un riferimento (this). La parte a destra è potenzialmente accesso al campo quantità MA occorrendo il nome semplice quantità nell'ambito della dichiarazione del nome di parametro "int quantità" sappiamo che, ripeto a destra, stiamo "parlando" del parametro del metodo.

Più in generale, la parola chiave this, nella sua forma qualificata, risolve tutti i casi di adombramento che coinvolgano due nomi di membri di istanza, quando la dichiarazione adombrante appartenga ad un tipo interno non annidato del tipo che dichiara il nome adombrato.

Vale, ad esempio, per i nomi di metodo:

Codice:
public class ExtraPippo {
    public String getFrase() { return "Ciao da extra pippo"; }

    public void parla() { System.out.println(getFrase()); }

    class IntraPippo() {
        public String getFrase() { return "Ciao da intra pippo"; }

        public void parla() {
            this.parla(); //this non qualificato
            ExtraPippo.this.parla(); //this qualificato
        }
    }
}
Caso diverso è il "this" che appare nell'espressione di invocazione di un costruttore alternato. A certe condizioni, un costruttore può invocare un altro costruttore. Tale invocazione è detta appunto invocazione di costruttore alternato e si esprime con:

<A>this(B)

dove A è un elenco di dichiarazioni di parametro per l'invocazione di costruttori generici e B è l'elenco di dichiarazioni di parametri attuali. Ad esempio:

Codice:
public class SemprePippo {
    private String parola;

    public SemprePippo(String parola) {
        this.parola = parola;//this risolve l'adombramento tra parametro e campo
    }

    public SemprePippo() {
        this("default");//invocazione di costruttore alternato
    }
}
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e Dual Mode LG UltraGear evo GM9: 27 pollici, 5K, Mini LED e...
La NASA sta costruendo e provando i dron...
Northrop Grumman utilizzerà HALO ...
Anthropic prepara l'IPO dei record: gli ...
La beta di iOS 27 conferma i rumor, Appl...
HONOR esagera, il prossimo smartphone av...
L'edizione speciale della Switch 2 per i...
Taiwan, il primo attacco hacker AI auton...
The Lord of the Rings: War in the North ...
I prezzi delle RTX 50 continuano ad aume...
La prossima crisi riguarderà i pannelli ...
Terabyte di dati trafugati: un attacco a...
Volo Delta 591, spunta un Wi-Fi che imit...
La scienziata lancia l'allarme: l'intell...
BYD Denza N8 e la super batteria: 130 kW...
Trump autorizza le aziende private a hac...
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: 20:13.


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