Di Jawa, kita dapat membagi suatu kelas menjadi beberapa file

Setiap kemungkinan untuk membagi kelas menjadi beberapa fisik file menggunakan Java?

Mengomentari pertanyaan (11)
Larutan

Tidak, seluruh kelas harus dalam satu file di Jawa.

Jika anda're berpikir C#'s "sebagian jenis" fitur, ada's tidak ada yang setara di Jawa. (Jika anda tidak't berpikir C#, abaikan ini :)

Komentar (2)

Ini mungkin ide yang baik jika kelas ini benar-benar begitu besar seperti yang menerapkan konsep-konsep yang tidak mudah untuk dipahami. Saya melihat dua cara yang berbeda untuk melakukan hal ini:

  1. Menggunakan warisan: Pindahkan-konsep umum dari kelas ke kelas dasar dan berasal berupa kelas dari itu.

  2. Menggunakan agregasi: Memindahkan bagian-bagian dari kelas ke kelas yang terpisah dan membangun hubungan untuk kedua kelas menggunakan referensi.

Seperti yang disebutkan sebelumnya, tidak ada konsep seperti kelas parsial di pulau Jawa, sehingga anda benar-benar harus menggunakan OOP mekanisme.

Komentar (0)

Hanya menggunakan javac, hal ini tidak mungkin. Anda tentu bisa menggabungkan beberapa file menjadi satu .file java sebagai bagian dari proses membangun, dan memanggil javac setelah itu, tapi itu akan menjadi rumit pada begitu banyak tingkatan yang mungkin akan berguna.

Mungkin anda bisa menjelaskan masalah anda, maka kami dapat membantu lebih baik.

Jika anda merasa anda .java file yang terlalu besar, anda mungkin harus mempertimbangkan refactoring.

Komentar (0)

Ya, Anda Bisa!

Untuk kepentingan penyelesaian:

Sejak Java 8, anda memiliki konsep metode default.

anda dapat membagi kelas menjadi beberapa file/subclass dengan lembut abmenggunakan antarmuka

mengamati:

MyClassPartA.java

interface MyClassPartA{
    public default int myMethodA(){return 1;}
}

MyClassPartB.java

interface MyClassPartB{
    public default String myMethodB(){return "B";}
}

dan menggabungkan mereka:

MyClass.java

public class MyClass implements MyClassPartA, MyClassPartB{}

dan menggunakan mereka:

MyClass myClass = new MyClass();

System.out.println(myClass.myMethodA());
System.out.println(myClass.myMethodB());

Anda bahkan dapat melewati variabel antara kelas/file dengan abstrak getter dan setter bahwa anda akan perlu untuk menyadari/override pada kelas utama, atau superclass dari itu namun.

Komentar (1)

Tentu saja itu mungkin, tapi aku don't pikir itu's berguna sama sekali.

Untuk memulai, membagi isn't benar-benar pertanyaan yang saya kira, anda hanya mengkompilasi file dan membaginya apapun cara yang anda inginkan.

Sekarang untuk menempatkan mereka kembali bersama-sama semua yang perlu anda lakukan adalah untuk menulis kustom kelas loader yang memuat semua bagian, menggabungkan mereka ke dalam satu byte array, maka panggilan defineClass().

Seperti saya katakan, itu tidak terlihat cukup sia-sia dan mungkin bukan apa yang anda inginkan dan pasti tidak apa yang anda butuhkan, tapi secara teknis mungkin.

(Saya melakukan sesuatu yang sama sekali sebagai bercanda cara menyamarkan kode: byte dari file kelas yang tersebar di konstanta dari semua kelas-kelas lain dalam aplikasi. Itu menyenangkan, saya harus mengakui.)

Komentar (0)

Tidak ada, di Jawa ini tidak dapat dilakukan.

Komentar (0)

Tidak ada yang dapat anda't. Jika kelas terlalu besar dari yang anda harus membaginya menjadi dua atau lebih.

Komentar (7)