Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce
Abbiamo provato il nuovo HUAWEI Pura 80 Pro. Parliamo di uno smartphone che è un vero capolavoro di fotografia mobile, grazie ad un comparto completo in tutto e per tutto, In questa colorazione ci è piaciuto molto, ma i limiti hardware e software, seppur in netto miglioramento, ci sono ancora. Ma HUAWEI ha fatto davvero passi da gigante per questa nuova serie Pura 80. Buona anche l'autonomia e soprattutto la ricarica rapida sia cablata che wireless, velocissima.
Opera Neon: il browser AI agentico di nuova generazione
Opera Neon: il browser AI agentico di nuova generazione
Abbiamo provato il nuovo web browser con intelligenza artificiale della serie Opera accessibile tramite abbonamento. Ecco le nostre prime impressioni sulle funzionalità di Opera Neon basate su AI e come funzionano
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-02-2009, 17:25   #1
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
[JAVA] Dichiarare un metodo static

Ciao...un piccolo dubbio...quand'è che bisogna dichiarare un metodo come static?

Una variabile la dichiaro static quando deve essere di classe ovvero che non è una variabile che identifica caratteristiche dei singoli oggetti ma una caratteristica di tutta la classe...che ne sò ad esempio ogni volta che creo un nuovo oggetto il costruttore incrementa una variabile di classe "conta" che mi tiene il conto di quanti oggetti sono stati creati....

Ma un metodo quand'è che ho necessità di dichiararlo come static?

Grazie
Andrea
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2009, 18:50   #2
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
I casi/motivi possono essere vari, comunque in genere quando il metodo non agisce su una particolare istanza oppure non hai bisogno di/non vuoi creare un'istanza in/su cui chiamarlo.
Ad esempio, se stai scrivendo una classe di utility (ad esempio un banale contenitore generico di funzioni che operano delle trasformazioni su stringhe), in relazione al tipo di applicativo che scrivi puoi non avere il bisogno di istanziare la classe per chiamarne i metodi; ecco che in quel caso ti può tornare un metodo di tipo static, il cui contenuto è avulso dal contesto della singola istanza della classe.
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2009, 19:18   #3
agente mm8
Senior Member
 
Iscritto dal: Mar 2008
Messaggi: 401
In maniera più pratica, se il metodo do() non è statico (quindi deve usare delle variabili che si inizializzano con il costruttore, ecc.) si usa così:
Codice:
BohClass bc = new BohClass(...);
bc.do();
Se è un metodo statico (quindi non deve usare variabili della classe) si usa così:
Codice:
BohClass.do();
Un metodo do statico:
Codice:
public class BohClass{
    pubic static int do(int n){
        int x = 3;
        return x + n;
    }
}
metodo do non statico:
Codice:
public class BohClass{
    int y = 5;
    public int do(int n){
        int x = 3;
        return y + x + n;
    }
}
agente mm8 è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2009, 09:52   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Un buon esempio di metodi statici li puoi trovare nella classe java.lang.Math.

Quote:
Originariamente inviato da agente mm8
Se è un metodo statico (quindi non deve usare variabili della classe) si usa così:
Questa frase è un po' fuorviante, perchè può essere interpretata erroneamente in funzione del significato che si attribuisce a "variabile di classe".

In Java meglio parlare di membri di istanza e membri di classe.
In questo caso se un metodo è statico (metodo di classe) non può riferirsi a membri di istanza ma può riferirsi a membri di classe
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2009, 10:37   #5
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
<rant>
Non sei mai obbligato a dichiare qualcosa 'static'...
static ed extends dovrebbero essere eliminati dal linguaggio...
</rant>
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2009, 10:59   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da shinya Guarda i messaggi
<rant>
static ed extends dovrebbero essere eliminati dal linguaggio...
</rant>
Da quale linguaggio? Solo da Java?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2009, 11:40   #7
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Da quale linguaggio? Solo da Java?
Si si, parlavo solo di java.
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2009, 11:47   #8
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da shinya Guarda i messaggi
Si si, parlavo solo di java.
Non ho però capito perchè elimineresti anche extends...
Come implementi l'ereditarietà?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2009, 12:24   #9
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Non ho però capito perchè elimineresti anche extends...
Come implementi l'ereditarietà?
Beh, fare a meno di extends non vuol dire eliminare implements
Avrei dovuto essere più specifico e dire che vorrei eliminare extends per le classi e lasciarlo per le interfacce.
L'ereditarietà fra classi è causa di problemi spinosi tipo il 'fragile base class problem'.

http://www.cas.mcmaster.ca/~emil/publications/fragile/
http://en.wikipedia.org/wiki/Fragile_base_class
Item 17: Design and document for inheritance or else prohibit it (questo è un capitolo di Effective Java di Bloch)

Personalmente vado via implementando sempre da interfaccia, e il polimorfismo è salvo.
Poi oh, è sempre il mio gusto e basta... come sarebbe sempre solo il mio gusto avere i generics anche a runtime, il multiple dispatch (disaccoppiando la classe, che dovrebbe essere solo 'stato', dai metodi, com'è in common lisp, dylan, factor, clojure, e altri), le funzioni come first-class-objects.... e vabbè... avevo messo il tag <rant>, no?
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2009, 12:42   #10
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da shinya Guarda i messaggi
Poi oh, è sempre il mio gusto e basta... come sarebbe sempre solo il mio gusto avere i generics anche a runtime, il multiple dispatch (disaccoppiando la classe, che dovrebbe essere solo 'stato', dai metodi, com'è in common lisp, dylan, factor, clojure, e altri), le funzioni come first-class-objects.... e vabbè... avevo messo il tag <rant>, no?
Certo, i gusti non si discutono.
Invece sono contento di farti queste domande perchè di solito le tue risposte mi sono di stimolo per apprendere cose nuove o vedere cose non nuove da un nuovo punto di vista.
Grazie dei link, in pausa pranzo me li leggo.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2009, 12:56   #11
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da shinya Guarda i messaggi
<rant>
Non sei mai obbligato a dichiare qualcosa 'static'...
static ed extends dovrebbero essere eliminati dal linguaggio...
</rant>
Per quanto riguarda nel preferire l'utilizzo della composizione e dell'implementazione di interfacce al posto dell'ereditarietà sono d'accordissimo.
Per quanto riguarda i metodi statici invece hanno anche la loro utilità, come nel caso del Factory pattern o di classi astratte di utility.
E il factory, quando non viene abusato, potrebbe anche essere una buona soluzione per determinati problemi.

P.S. ecco un divertentissimo esempio (grazie fek ) che spiega perchè NON si deve abusare assolutamente del Factory pattern:
http://discuss.joelonsoftware.com/de...el.3.219431.12

__________________

Ultima modifica di ^TiGeRShArK^ : 04-02-2009 alle 12:58.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2009, 14:28   #12
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
LOL! Quel link me l'ero perso! Troppo spassoso!
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2009, 18:24   #13
D4rkAng3l
Bannato
 
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2682
doh seconda parte scritta dell'esame (quella su Java fatta oggi)....era tosto...pregate per me che se mi boccia o mi abbassa molto il voto rosico perchè al primo dei due scritti (quello teorico) avevo preso 28...ma su questo sono molto più titubante circa i miei risultati...più che altro spero riesa anche a capire la mia scrittura che è tra il cuneiforme ed il gereoglifico...
D4rkAng3l è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
1.200 CV e drift a 213 km/h: la supercar...
Shenzhou-21: esperimenti sui topi in orb...
Cloudera punta su cloud privato e intell...
Il mistero del Ryzen 7 9700X3D: prezzo p...
Posticipato il rientro dell'equipaggio c...
Propaganda russa e hactivism fra le prin...
Superluna del Castoro: stasera il satell...
NVIDIA regala una GeForce RTX 5090 Found...
Snowflake punta su Intelligence, l'IA pe...
Volkswagen realizzerà i propri chip per ...
Formula E GEN4 svelata: 600 kW di potenz...
PC Desktop HP Victus con RTX 4060 e Ryze...
Fastnet, il 'mega-cavo' di AWS che pu&og...
Offerte Amazon da non perdere: GeForce R...
Clima, l'UE trova l'accordo sul taglio d...
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: 04:31.


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