1. ภาพรวม
ทุกโปรแกรมต้องการสถานที่เพื่อเริ่มต้นการทำงาน พูดถึงโปรแกรม Java นั่น คือวิธีการหลัก เราคุ้นเคยกับการเขียน เมธอดหลักในช่วงโค้ดของเรามากจนเราไม่ได้ใส่ใจกับรายละเอียด ในบทความสั้น ๆ นี้เราจะวิเคราะห์วิธีการนี้และแสดงวิธีอื่น ๆ ในการเขียน2. ลายเซ็นทั่วไป
เทมเพลตวิธีการหลักที่พบบ่อยที่สุดคือ:public static void main(String[] args) { }
นั่นคือวิธีที่เราได้เรียนรู้นั่นคือวิธีที่ IDE เติมโค้ดให้เราโดยอัตโนมัติ แต่นั่นไม่ใช่รูปแบบเดียวที่วิธีนี้สามารถสันนิษฐานได้มีตัวแปรที่ใช้ได้บางตัวที่เราสามารถใช้ได้และไม่ใช่นักพัฒนาทุกคนที่ให้ความสำคัญกับข้อเท็จจริงนี้
ก่อนที่เราจะดำดิ่งลงไปในลายเซ็นของวิธีการเหล่านั้นเรามาดูความหมายของคำหลักแต่ละคำของลายเซ็นทั่วไป:
- สาธารณะ - ตัวปรับการเข้าถึงหมายถึงการมองเห็นทั่วโลก
- คงที่ - วิธีนี้สามารถเข้าถึงได้โดยตรงจากคลาสเราไม่จำเป็นต้องสร้างอินสแตนซ์อ็อบเจ็กต์เพื่อให้มีการอ้างอิงและใช้มัน
- เป็นโมฆะ - หมายความว่าวิธีนี้ไม่ส่งคืนค่า
- main - ชื่อของเมธอดนั่นคือตัวระบุที่ JVM มองหาเมื่อเรียกใช้โปรแกรม Java
สำหรับพารามิเตอร์argsแสดงถึงค่าที่ได้รับโดยวิธีการ นี่คือวิธีที่เราส่งผ่านข้อโต้แย้งไปยังโปรแกรมเมื่อเราเริ่มต้นครั้งแรก
พารามิเตอร์argsคืออาร์เรย์ของString s ในตัวอย่างต่อไปนี้:
java CommonMainMethodSignature foo bar
เรากำลังดำเนินการโปรแกรม Java ที่เรียกว่าCommonMainMethodSignatureและผ่าน 2 ข้อโต้แย้ง: fooและบาร์ ค่าเหล่านี้สามารถเข้าถึงได้ภายในเมธอดหลักเช่นargs [0] (มีfooเป็นค่า) และargs [1] (มีbarเป็นค่า)
ในตัวอย่างถัดไปเรากำลังตรวจสอบ args เพื่อตัดสินใจว่าจะโหลดพารามิเตอร์การทดสอบหรือการผลิต:
public static void main(String[] args) { if (args.length > 0) { if (args[0].equals("test")) { // load test parameters } else if (args[0].equals("production")) { // load production parameters } } }
โปรดจำไว้เสมอว่า IDE สามารถส่งผ่านอาร์กิวเมนต์ไปยังโปรแกรมได้
3. วิธีต่างๆในการเขียนmain ()วิธีการ
ลองตรวจสอบวิธีต่างๆในการเขียนวิธีการหลัก แม้ว่าจะไม่ธรรมดา แต่ก็เป็นลายเซ็นที่ถูกต้อง
โปรดทราบว่าสิ่งเหล่านี้ไม่เฉพาะเจาะจงกับเมธอดหลักแต่สามารถใช้กับเมธอด Java ใด ๆ ก็ได้ แต่ก็เป็นส่วนหนึ่งของเมธอดหลัก
สามารถวางวงเล็บเหลี่ยมใกล้Stringได้เช่นเดียวกับในเทมเพลตทั่วไปหรือใกล้argsทั้งสองด้าน:
public static void main(String []args) { }
public static void main(String args[]) { }
อาร์กิวเมนต์สามารถแสดงเป็น varargs:
public static void main(String...args) { }
เรายังสามารถเพิ่มเข้มงวด fpสำหรับเมธอดmain ()ซึ่งใช้สำหรับความเข้ากันได้ระหว่างโปรเซสเซอร์เมื่อทำงานกับค่าทศนิยม:
public strictfp static void main(String[] args) { }
ซิงโครไนซ์และสุดท้ายเป็นคำหลักที่ถูกต้องสำหรับวิธีการหลักแต่จะไม่มีผลที่นี่
ในทางกลับกันสามารถใช้ขั้นสุดท้ายกับargsเพื่อป้องกันไม่ให้อาร์เรย์ถูกแก้ไข:
public static void main(final String[] args) { }
ในการจบตัวอย่างเหล่านี้เราสามารถเขียนวิธีการหลักด้วยคำหลักทั้งหมดข้างต้น (ซึ่งแน่นอนว่าคุณอาจไม่เคยใช้ในแอปพลิเคชันที่ใช้งานได้จริง):
final static synchronized strictfp void main(final String[] args) { }
4. มีมากกว่าหนึ่งวิธี() หลัก
นอกจากนี้เรายังสามารถกำหนดวิธีการหลักได้มากกว่าหนึ่งวิธีในแอปพลิเคชันของเรา
ในความเป็นจริงบางคนใช้เป็นเทคนิคการทดสอบแบบดั้งเดิมเพื่อตรวจสอบความถูกต้องของแต่ละชั้นเรียน (แม้ว่ากรอบการทดสอบเช่นJUnitจะระบุไว้สำหรับกิจกรรมนี้มากกว่าก็ตาม)
ในการระบุวิธีการหลักที่ JVM ควรดำเนินการเป็นจุดเริ่มต้นของแอปพลิเคชันของเราเราใช้ไฟล์MANIFEST.MF ภายในรายการเราสามารถระบุคลาสหลักได้:
Main-Class: mypackage.ClassWithMainMethod
ส่วนใหญ่จะใช้เมื่อสร้างไฟล์. jar ที่ปฏิบัติการได้ เราระบุว่าคลาสใดมีเมธอดหลักในการเริ่มการดำเนินการผ่านไฟล์รายการที่อยู่ที่META-INF / MANIFEST.MF (เข้ารหัสใน UTF-8)
5. สรุป
บทช่วยสอนนี้อธิบายรายละเอียดของวิธีการหลักและรูปแบบอื่น ๆ ที่สามารถสรุปได้แม้กระทั่งวิธีที่นักพัฒนาส่วนใหญ่ไม่ได้ใช้กันทั่วไป
โปรดทราบว่าแม้ว่าตัวอย่างทั้งหมดที่เราได้แสดงจะถูกต้องในแง่ของไวยากรณ์ แต่ก็เพียงแค่ตอบสนองจุดประสงค์ทางการศึกษาและส่วนใหญ่เราจะยึดลายเซ็นทั่วไปในการทำงานของเรา