Rumah > Java > javaTutorial > teks badan

Bagaimana untuk menyelesaikan masalah bahawa kaedah utama tidak ditakrifkan di Jawa?

WBOY
Lepaskan: 2023-06-25 11:02:57
asal
2832 orang telah melayarinya

Sebagai bahasa pengaturcaraan berorientasikan objek, Java memerlukan titik masuk semasa melaksanakan program, dan titik masuk ini adalah kaedah utama. Tetapi kadang-kadang kita menghadapi situasi di mana kaedah utama tidak ditentukan, jadi bagaimana untuk menyelesaikannya?

1. Kaedah utama tidak ditakrifkan

Kaedah utama tidak ditakrifkan mungkin kerana kod telah diubah suai atau ada masalah mengimport kod orang lain. Pada masa ini kita boleh menggunakan refleksi untuk menanganinya.

1. Gunakan refleksi.

Refleksi ialah mekanisme asas dalam bahasa Java yang boleh memuatkan, mengendalikan dan menanya kelas dan antara muka semasa program sedang berjalan. Dengan refleksi, anda tidak perlu mengetahui semua kelas dan antara muka pada masa penyusunan. Mesin Maya Java (JVM) hanya perlu memuatkan kelas dan antara muka apabila program dijalankan. Oleh itu, mekanisme pantulan membolehkan program Java memuatkan dan mengendalikan kelas dan antara muka secara dinamik pada masa jalan.

Kod sampel adalah seperti berikut:

kelas awam NoMainClass {

public void sayHello() {
    System.out.println("Hello");
}
Salin selepas log masuk

}
kelas awam Utama {

public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
    Class<?> clazz = Class.forName("NoMainClass");
    Object o = clazz.newInstance();
    Method method = clazz.getMethod("sayHello");
    method.invoke(o);
}
Salin selepas log masuk

}

Dalam kod ini, program memuatkan kelas secara dinamik pada masa jalanan dan menciptanya kaedah Contoh kelas secara dinamik memperoleh kaedah contoh ini dan memanggilnya. Ini adalah cara menggunakan mekanisme pantulan untuk memuatkan kelas secara dinamik tanpa kaedah utama dan melaksanakannya.

2. Gunakan sistem modul Java 9.

Apabila kita perlu menggunakan sistem modul Java 9 untuk menyelesaikan masalah tidak menentukan kaedah utama, kita perlu menentukan kelas utama dalam fail penerangan modul. Sebagai contoh, kita boleh mentakrifkan perkara berikut dalam fail module-info.java:

module my.module {

requires other.module;
exports com.example;
provides service with com.example.MyServiceImpl;
main-class com.example.MyMain;
Salin selepas log masuk

}

Dalam fail penerangan modul ini, kami menentukan titik masuk program dengan menentukan kelas utama. Ini membolehkan mesin maya Java mencari kelas yang mentakrifkan kaedah utama dan melaksanakannya. Ringkasan Walau bagaimanapun, perlu diingatkan bahawa pendekatan ini mungkin mempunyai risiko keselamatan, jadi kita harus mengelak daripada menggunakan kaedah ini sebanyak mungkin. Apabila menulis kod, anda harus mengikut spesifikasi bahasa Java dan menentukan titik masuk program yang jelas.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah bahawa kaedah utama tidak ditakrifkan di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan