main
"Ana" yöntemi bildirmek için tanımlayıcı olarak kullanılırken tanımlayıcı olarak nasıl kullanılamaz?
Böyle klasik bir deyim için:
public class Foo{
public static void main(String[] args){
}
}
main
bir anahtar kelime değildir ve muhtemelen açık retro uyumluluk nedenleriyle Java'da hiçbir zaman bir anahtar kelime olmaz.
Soru hakkında, main
iyi bir tanımlayıcı mı?
Birincisi: derleyici için geçerli olması mutlaka iyi anlamına gelmez.
Örneğin,java1234
önerilen seçenek de geçerli bir tanımlayıcıdır, ancak bundan kaçınılmalıdır.
main
çok özel ve önemli bir anlamı vardır: tarafından yürütülen sınıfların ve kavanozların giriş noktası yöntemi olarak kullanılır. java
komut satırı .
Kullanarak main
tarafından kullanılacak kriterleri doldurmayan bir yöntem adı için java
komut satırında değişken adı olarak kullanan veya sınıf adı anlamlı olamaz çıkarırken sadece yanıltıcı olacaktır.
Örneğin, bir uygulamanın giriş noktasını temsil eden sınıfı uygulamanın Main
sınıfı olarak tanımlamak kabul edilebilir ve bu nedenle de değişken adı olarak kullanmak:
public class Main {
public static void main(String args[]){
Main main = new Main();
// ...
}
}
Genel olarak, Java'da, birden çok karakter veya "kelime" derleyici için geçerli tanımlayıcılar olarak kabul edilir, ancak istemci kodunda kullanılması kesinlikle önerilmez (ancak oluşturulan kod bunu yapabilir: örneğin iç içe sınıflar) okunabilir ve / ya da gerçekten yanıltıcı.
Örneğin bu derleyici için geçerli olabilir:
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$);
}
}
Ama istemiyoruz:
- isim
Object
bu tanımlandığı gibidir sınıfımızı java.lang
(1).
- komut satırı (2)
main()
tarafından kullanılacak ölçütleri karşılamıyorsa yöntemi adlandırmak için java
.
Object.toString()
(3) yöntemini aşırı yüklemek için .
- Bizim değişkenleri isim
_
, $
veya paylaşılan adlandırma kurallarına (4) aykırı herhangi şaşırtıcı / unmeaningful karakterleri.