14

In C# .net there is a provision to have two different class files and make them a single class using the keyword partial keyword.this helps it to keep [for ex]UI and logic seperate. of course we can have two classes to achieve this one for UI and other for logic. Can this be achieved in java some how?

Ravisha
  • 3,261
  • 9
  • 39
  • 66
  • I found a way to separate an inner class into an external file, maybe it helps ? http://stackoverflow.com/q/27284667/1190665 – John Dec 04 '14 at 01:34

1 Answers1

21

On source file splitting

No. Java source codes can not be split across multiple files.

From the Wikipedia article Comparison of Java and C Sharp

The Sun Microsystems Java compiler requires that a source file name must match the only public class inside it, while C# allows multiple public classes in the same file, and puts no restrictions on the file name. C# 2.0 and later allows a class definition to be split into several files, by using the partial keyword in the source code. In Java, a public class will always be in its own source file. In C#, source code files and logical units separation are not tightly related.


On separating logic and UI into their own classes

The two classes approach is a much better solution than the one-class-two-source approach in this case, because the separation is enforced in the design, not just physical separation in the source codes.

See also

Community
  • 1
  • 1
polygenelubricants
  • 376,812
  • 128
  • 561
  • 623
  • @polygenelubricants thanks for the info.I just wanted the clarification by any chance there was a tweak to get this done.Well having two different classes is more like a design pattern.Anyway thanks for the info – Ravisha May 05 '10 at 05:30
  • @Ravisha: you can always hack `javac` to allow partial class definition, includes, etc. In fact, it's possible that such hack already exists. But no, standard Java doesn't allow this. – polygenelubricants May 05 '10 at 05:46
  • can u give any particular link w.r.t hacking javac – Ravisha May 06 '10 at 07:36