Bagaimana main
tidak bisa digunakan sebagai pengidentifikasi sementara itu digunakan sebagai pengidentifikasi untuk mendeklarasikan metode "utama"?
Untuk ungkapan klasik seperti itu:
public class Foo{
public static void main(String[] args){
}
}
main
bukan kata kunci dan mungkin tidak akan pernah menjadi kata kunci di Jawa karena alasan kompatibilitas retro yang jelas.
Tentang pertanyaan, apakah main
pengidentifikasi yang baik?
Pertama: valid untuk kompiler tidak berarti selalu baik.
Misalnya java1234
opsi yang diusulkan juga merupakan pengidentifikasi yang valid tetapi itu harus benar-benar dihindari.
main
memiliki arti yang sangat khusus dan penting: digunakan sebagai metode titik masuk kelas dan guci yang dieksekusi oleh java
baris perintah.
Menggunakan main
untuk nama metode yang tidak memenuhi kriteria yang akan digunakan oleh java
baris perintah akan hanya menyesatkan saat menggunakannya sebagai nama variabel atau nama kelas bisa masuk akal.
Misalnya mendefinisikan kelas yang mewakili titik masuk aplikasi sebagai Main
kelas aplikasi dapat diterima dan menggunakannya sebagai nama variabel juga seperti:
public class Main {
public static void main(String args[]){
Main main = new Main();
// ...
}
}
Secara umum, di Jawa, banyak karakter atau "kata" dianggap sebagai pengidentifikasi yang valid untuk kompiler tetapi sangat tidak disarankan untuk digunakan dalam kode klien (tetapi kode yang dihasilkan dapat melakukan hal itu: kelas bersarang misalnya) tidak dapat dibaca dan / atau benar-benar menyesatkan.
Misalnya ini bisa valid untuk kompiler:
public class Object { // 1
public void foo() {
...
}
}
public class BadChosenIdentifier {
public static void main() { // 2
new BadChosenIdentifier().toString(new Object());
}
public void toString(Object java1234) { // 3, 4
String _result$ = java1234 + " -> to avoid"; // 4
System.out.println(_result$);
}
}
Tapi kami tidak mau:
- memberi nama
Object
kelas kami karena ini didefinisikan dalam java.lang
(1).
- memberi nama metode
main()
jika tidak memenuhi kriteria yang akan digunakan oleh java
baris perintah (2).
- untuk membebani
Object.toString()
metode (3).
- untuk memberi nama variabel kita dengan
_
, $
atau karakter mengejutkan / tidak berarti yang bertentangan dengan konvensi penamaan bersama (4).