2009-10-02 15 views

risposta

17

Ci sono membri statici nelle classi Java, ma nessuna classe statica, come in C#.

Il modificatore di classe statica C# non modifica in realtà nulla sulla classe, dal punto di vista dell'utilizzo. Ti impedisce solo, in fase di compilazione, di aggiungere variabili di istanza.

È possibile creare una classe in Java che funzioni come una classe statica C# semplicemente dichiarando ogni membro come statico. Vedi la sezione tutorial su "Understanding Instance and Class Members" per i dettagli.

+0

Yeap in .NET 1.1 Ricordo di aver creato una classe sigillata con un costruttore privato per ottenere l'effetto desiderato. – RichardOD

+0

Inoltre impedisce al momento della compilazione di aggiungere metodi di istanza, overload dell'operatore o espressioni 'new' che allocano un'istanza della classe. –

8

No. Contrassegna solo tutto ciò che è statico. È possibile aggiungere un costruttore privato che genera un errore e rendere la classe final.

+2

Non l'ho mai provato, ma cosa succede se provi a contrassegnare la classe come definitiva e astratta? – Powerlord

+2

Non può essere sia "finale" che "astratto", sfortunatamente. Ma buon punto. –

+0

Avresti un errore in fase di compilazione. – RichardOD

0

In ogni linguaggio OO, una buona alternativa (più flessibile) alla dichiarazione di classe statica consiste nell'utilizzare il modello singleton.

Tuttavia, se la classe è una pura classe di utilità, è possibile dichiarare statici tutti i membri/metodi.

+3

Un singleton rende solo più difficile l'uso. –

+4

se la soluzione a un problema è aggiungere un singleton, ora hai due problemi ... –

Problemi correlati