2009-10-02 5 views

Respuesta

17

Hay miembros estáticos en las clases de Java, pero no hay clases estáticas, como en C#.

El modificador de clase estática C# realmente no cambia nada sobre la clase, desde un punto de vista de uso, sin embargo. Solo le impide, en tiempo de compilación, agregar variables de instancia.

Puede hacer una clase en Java que funcione como una clase estática C# declarando que cada miembro es estático. Consulte la sección de tutorial en "Understanding Instance and Class Members" para más detalles.

+0

Yeap en .NET 1.1 Recuerdo crear una clase sellada con un constructor privado para lograr el efecto deseado. – RichardOD

+0

También le impide en el momento de la compilación agregar métodos de instancia, sobrecargas del operador o expresiones 'nuevas' que asignarían una instancia de la clase. –

8

No. Simplemente marque todo estático. Posiblemente agregue un constructor privado que arroje un error y cree la clase final.

+2

Nunca he intentado esto, pero ¿qué sucede si tratas de marcar la clase como final y abstracta? – Powerlord

+2

Desafortunadamente, no puede ser tanto 'final' como' abstracto'. Pero buen punto. –

+0

Obtendrá un error de tiempo de compilación. – RichardOD

0

En cada idioma OO, una buena (y más flexible) alternativa a la declaración de clase estática es usar el patrón singleton.

Sin embargo, si su clase es una clase de utilidad pura, puede declarar todos sus miembros/métodos como estáticos.

+3

Un singleton simplemente lo hace más difícil de usar. –

+4

si la solución a un problema es agregar un singleton, ahora tienes dos problemas ... –