java partial-classes

¿Hay una manera de hacer clases parciales en Java(como C#)?



partial-classes (4)

No hay forma de tener definiciones parciales de clase, distribuidas en archivos. Cada clase debe ser definida en su propio archivo homónimo.

Por el contrario, puede definir clases adicionales dentro de ese archivo y dentro de la definición de clase (nivel superior).

C # tiene este gran concepto donde una clase se puede distribuir a través de múltiples archivos .cs. Esto funciona muy bien cuando se desea un solo objeto (variables miembro que necesita todo el código) pero hay un montón de código. Luego, puede distribuir este código por funcionalidad a través de los archivos de origen.

¿Hay una manera de hacer esto en Java?

Actualización: Ok, al principio me dije a mí mismo que esta debe ser una sola clase grande (realiza el diseño del contenido de un archivo DOCX). Pero luego, después de publicar esto, lo pensé más y realmente me molestó que sea esta una clase grande (más de 5,000 líneas en la actualidad).

Así que pensé en algunas alternativas y encontré una buena manera de dividirlo en una clase principal y unas 20 clases de ayudantes. Funciona muy bien de esta manera realmente separando la funcionalidad en cada parte.

Así que ... aunque creo que las clases parciales son un constructo útil a veces, en este caso, la falta de clases parciales hizo que se me ocurriera un mejor diseño. (Y esto no tiene nada que ver con la pregunta inicial, pero pensé que valía la pena compartirla).


No, Java no soporta clases parciales.

Si esto es solo curiosidad ociosa, echa un vistazo a Scala . Se compila en archivos .class como Java y tiene una interoperabilidad completa. Es compatible con un equivalente aproximado de clases parciales como "rasgos".

Un ejemplo de uso de rasgos:

trait FunctionalityA { // some stuff implemented here } trait FunctionalityB { // more stuff implemented... } // etc... class MyBigClass extends FunctionalityA with FunctionalityB with FunctionalityC


No, es una de las características maravillosas de Java. Una clase debe ser idéntica a su nombre de archivo. :-)