是否可以讓主方法接受除字符串數組之外的其他參數?例如,我們可以有一個像main(Animals[]args){/*code*/}
這樣的方法嗎?如果不是,那爲什麼?製作字符串以外的主要接受對象嗎?
2
A
回答
6
否 - 入口點始終是標頭爲public static void main(String[] args)
的方法(即JVM調用此特定方法)。你當然可以定義一個方法
public static void main(Animals[] args) {...}
但它不會在運行程序時直接執行。
EDIT:所述main
方法具體有一個字符串數組參數的原因是因爲該數組將包含command-line arguments在程序運行時。直觀地說,這些應該是字符串(例如肯定不是Animal
)。
2
因爲當你從命令行輸入時,你輸入的是字符串,而不是一個複雜的類型。
所以它是有意義的參數是指向字符串的指針(引用)數組,包括或不是(取決於語言)參數的數量。在Java中,這是不需要的,因爲你可以使用length
。
不知道爲什麼你要嗎?..
+0
這只是一個隨機的想法。 –
1
1
沒有任何東西阻止你擁有一個公共靜態void main,它採用String之外的參數類型。問題在於JVM需要簡單的規則來識別和調用方法。它有一系列的字符串,例如從命令行,可以傳遞給程序。在開始運行程序之前,JVM如何將它轉換爲Animal或其他類型的數組?
下面是一個採用不同參數類型的主例程,以及程序本身處理從JVM所具有的字符串數組中生成Animal數組的過程。當然,給第二個主要方法一個更有意義的名字真的會更好。
import java.util.Arrays;
public class Bad {
public static void main(String[] args) {
Animal[] animals = new Animal[args.length];
for (int i = 0; i < args.length; i++) {
animals[i] = new Animal(args[i]);
}
main(animals);
}
public static void main(Animal[] args) {
System.out.println(Arrays.asList(args));
}
}
class Animal {
String species;
public Animal(String species) {
this.species = species;
}
public String toString() {
return "Animal: " + species;
}
}
相關問題
- 1. JSONModel接受對象和字符串
- 2. 製作日曆對象的字符串
- 3. 接受需要字符串文字的函數中的字符。
- 4. 製作字符串到對象?
- 5. Android的功能以接受字符串和字符串資源
- 6. 創建在JavaScript中的多行字符串接受Ruby對象
- 7. TCPDF/FPDI可以接受PDF爲字符串嗎?
- 8. jquery限制接受的字符在字符串中的位置
- 9. 字符串作爲對象
- 10. TinyXML2 SetAttribute不能接受字符串對象?
- 11. 爲什麼execSQL接受對象[]和原始查詢字符串[]
- 12. 谷歌腳本insertSheet不接受字符串對象?
- 13. 在需要字符串的循環外部創建新對象
- 14. 接受字符串值
- 15. 字符串未能接受
- 16. 通過接受字符串
- 17. setBackGroundRGB不接受字符串
- 18. 把NSOperation主要變成超級可以接受嗎?
- 19. 我可以複製空字符串中的字符串嗎?
- 20. 如何定義對象主要爲字符串類型
- 21. Flask的url_for對查詢字符串有字符串限制嗎?
- 22. Javascript字符串意外轉向對象
- 23. 將字符串以外的對象添加到ToolStripDropDownButton DropDownItem
- 24. JavaScript對象內的字符串連接
- 25. 我可以使用空字符串作爲對象標識符嗎?
- 26. 字符串變量爲DefaultMutableTreeNode對象嗎?
- 27. 想要在對象數組中搜索字符串嗎?
- 28. Dojo DnD接受外部對象
- 29. 字符串對象。澄清需要
- 30. .NET MVC是否接受DateTime對象的單位數字日/月字符串?
爲什麼Java主要必須有字符串?爲什麼不使用其他類型的對象? –
@davidblaine請參閱我上面的編輯 – arshajii