1. ความแตกต่างระหว่างการแจงนับและค่าคงที่
เมื่อพูดถึงการแจงนับก่อนอื่นเราคิดว่ามันแตกต่างจากค่าคงที่ที่แก้ไขโดยสตริงสุดท้ายคงที่สาธารณะ
ฉันจะอ้างถึงข้อดีสองประการของการแจงนับ:
1. ตรวจสอบความปลอดภัยประเภท: ผู้โทรไม่สามารถผ่านค่า int หรือสตริงได้ตามต้องการ;
2. รหัสสามารถอ่านได้มาก
ตัวอย่างเช่น:
ในการเขียนโปรแกรมจริงมักจะมี "ชุดข้อมูล" ซึ่งค่ามีความเสถียรในโปรแกรมและองค์ประกอบใน "ชุดข้อมูล" มี จำกัด ตัวอย่างเช่นองค์ประกอบข้อมูลทั้งสี่ของฤดูใบไม้ผลิฤดูร้อนฤดูใบไม้ร่วงและฤดูหนาวเป็น "ชุดข้อมูล" ของสี่ฤดูกาล
คุณได้เขียนวิธีการรับ (ฤดูสตริง) และประเภทที่คุณอินพุตสามารถเป็นประเภทสตริงเท่านั้นและสตริงสามารถเป็นได้เท่านั้น (ฤดูใบไม้ผลิฤดูร้อนฤดูใบไม้ร่วงฤดูหนาว)
ครั้งนี้ คุณเขียนค่าคงที่สตริงสี่ค่า
ชั้นเรียนสาธารณะทั่วไป {สตริงสุดท้ายคงที่สปริง = "สปริง"; String String สุดท้ายของสาธารณะ = "ฤดูร้อน"; สตริงสุดท้ายคงที่สาธารณะฤดูร้อน = "ฤดูใบไม้ร่วง"; สตริงสุดท้ายคงที่สาธารณะในฤดูใบไม้ร่วง = "ฤดูหนาว";}การวาง (Common.season) ในวิธีการรับคือการวาง "ฤดูใบไม้ผลิ" ไว้ในนั้น แต่ในเวลานี้คุณจะพบว่ามีอันตรายที่ซ่อนอยู่ที่นี่ คุณจะได้รับ (ฤดูกาลสตริง) หลังจากทั้งหมดจะมีการใส่ประเภทสตริง หากเพื่อนร่วมงานคนใหม่หรือเพื่อนร่วมงานที่ไม่มีข้อมูลไม่ทราบว่าคุณสามารถใส่ "ฤดูใบไม้ผลิฤดูร้อนฤดูใบไม้ร่วงและฤดูหนาว" ในวิธีนี้เท่านั้น มันทำให้สตริงเช่น Get ("Xiaoxiao") ในเวลานี้มันจะไม่รายงานข้อผิดพลาดในช่วงระยะเวลาการรวบรวม หลังจากวิ่งเท่านั้นมันจะพบว่ามันผิด
เพื่อป้องกันอันตรายที่ซ่อนอยู่ข้างต้นการแจงนับจะปรากฏขึ้น
ฤดู enum สาธารณะ {ฤดูใบไม้ผลิ ("ฤดูใบไม้ผลิ"), ฤดูร้อน ("ฤดูร้อน"), ฤดูใบไม้ร่วง ("ฤดูใบไม้ร่วง"), ฤดูหนาว ("ฤดูหนาว"); -ในเวลานี้เราปรับเปลี่ยนการถ่ายโอนพารามิเตอร์ของวิธี GET และเปลี่ยนเป็น (ฤดูกาล) ในเวลานี้เราเพิ่ม Get (season.spring) ซึ่งสามารถมั่นใจได้ว่ามีพารามิเตอร์เพียงไม่กี่ตัวเท่านั้น
2. เข้าใจการแจงนับ
ก่อนอื่นเราต้องมีความชัดเจน ในความเป็นจริงการแจงนับเป็นชั้นเรียน ฉันจะเขียน enum เพื่อทำความเข้าใจ
// เราถือว่า enums เป็นฤดูกาลที่สาธารณะทั่วไป enum {ฤดูใบไม้ผลิ (1, "ฤดูใบไม้ผลิ"), ฤดูร้อน (2, "ฤดูร้อน"), ฤดูใบไม้ร่วง (3, "ฤดูใบไม้ร่วง"), ฤดูหนาว (4, "ฤดูหนาว"); // อันสุดท้ายที่นี่จะต้องเป็นเครื่องหมายอัฒภาคมิฉะนั้นจะมีการรายงานข้อผิดพลาด/ *เราสามารถเข้าใจได้ว่าเป็น *ฤดูใบไม้ผลิสุดท้ายของฤดูใบไม้ผลิ = ฤดูกาลใหม่ (1, ฤดูใบไม้ผลิ); *ฤดูร้อนสุดท้ายในช่วงฤดูร้อน = ฤดูกาลใหม่ (2, ฤดูร้อน); *ฤดูใบไม้ร่วงสุดท้ายในฤดูใบไม้ร่วง = ฤดูกาลใหม่ (3, ฤดูใบไม้ร่วง); *ฤดูหนาวครั้งสุดท้ายสาธารณะคงที่ฤดูหนาว = ฤดูกาลใหม่ (4, ฤดูหนาว); * เนื่องจากเป็นวัตถุจึงเป็นเรื่องง่ายที่จะเข้าใจด้านล่าง*//** 1 มีพารามิเตอร์สองตัวในวัตถุด้านบนดังนั้นจึงต้องมีตัวสร้างประเภทนี้ด้านล่าง* 2 นี่เป็นส่วนตัวเพราะมันไม่สามารถเป็นวัตถุใหม่*/ ฤดูกาลส่วนตัว this.code = code; } // แอตทริบิวต์ของชื่อสตริงส่วนตัวของวัตถุ; รหัส INT ส่วนตัว // วิธีการรับคุณสมบัติวัตถุสตริงสาธารณะ getName () {return this.name; } สตริงสาธารณะ getCode () {return this.name; } // รับวัตถุผ่านรหัสเราสามารถได้รับคุณสมบัติอื่น ๆ ของวัตถุสาธารณะการถอดรหัสแบบคงที่สาธารณะ (รหัส int) {ฤดูกาลฤดูกาล = null; สำหรับ (ประเภทฤดูกาล: season.values ()) {ถ้า (type.code == รหัส) {season = type; หยุดพัก; }} ฤดูกาลกลับ; } // วิธีการ re-toString สตริงสาธารณะ toString () {return this.name; -ตัวอย่างข้างต้นอธิบายการแจงนับเป็นอย่างดี มันไม่แตกต่างจากชั้นเรียนธรรมดา มันใช้วิธีอื่นในการสร้างวัตถุหลายอย่างด้วยแอตทริบิวต์ สิ่งนี้ยังต้องการตัวสร้างที่มีคุณสมบัติและนั่นคือทั้งหมด
นี่คือคุณสมบัติบางอย่างของการแจงนับ:
1. ไม่สามารถมีตัวสร้างสาธารณะและการทำเช่นนั้นสามารถมั่นใจได้ว่ารหัสลูกค้าไม่สามารถสร้างอินสแตนซ์ใหม่ของ enum ได้
2. การแจงนับไม่สามารถสืบทอดคลาสอื่น ๆ ได้เพราะมันสืบทอด java.lang.enum โดยค่าเริ่มต้น
3. ที่อยู่ค่าคงที่ไม่ซ้ำกันและคุณสามารถใช้ == เพื่อเปรียบเทียบโดยตรงและประสิทธิภาพจะได้รับการปรับปรุง
4. enum ยังให้วิธีการค่าซึ่งช่วยให้คุณสามารถข้ามค่า enum ทั้งหมดได้อย่างง่ายดาย
5. enum ยังมีวิธี oridinal ซึ่งส่งคืนลำดับของค่า enum ในคลาส enum ซึ่งขึ้นอยู่กับลำดับของการประกาศค่า enum
3. การใช้งานทั่วไปของการแจงนับ
ประเภทแรก: สวิตช์แอปพลิเคชัน
สร้างการแจงนับก่อน:
Public Enum Common {แทรกแก้ไขลบ} // เนื่องจากนี่เป็นวัตถุที่ไม่มีพารามิเตอร์สามารถใช้ตัวสร้างเริ่มต้นของระบบได้ ไม่จำเป็นต้องเขียนแอตทริบิวต์และวิธีการการเขียนรหัสการใช้งาน
ชั้นเรียนสาธารณะ Commonutils {โมฆะคงที่สาธารณะ getType (สามัญทั่วไป) {สามัญ c = สามัญ; สวิตช์ (c) {case insert: system.out.println ("แทรกการทำงาน"); หยุดพัก; Case Modify: System.out.println ("กำหนดค่าการดำเนินการ"); หยุดพัก; เคสลบ: System.out.println ("ลบการดำเนินการ"); หยุดพัก; }} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {getType (Common.delete); // เอาท์พุทพื้นหลัง: ลบการดำเนินการ}}การใช้งานครั้งที่สองคือการรับค่าค่าผ่านค่าคีย์เพื่อรับค่าอื่น ๆ
ชั้นเรียนแจงนับ
Season Enum สาธารณะ {ฤดูใบไม้ผลิ (1, "ฤดูใบไม้ผลิ", "ฤดูใบไม้ผลิว่าวบินในฤดูใบไม้ผลิ"), ฤดูร้อน (2, "ฤดูร้อน", "ว่ายน้ำในฤดูร้อน"), ฤดูใบไม้ร่วง (3, "ฤดูใบไม้ร่วง", "ฤดูใบไม้ร่วงออกไปในฤดูใบไม้ร่วง), ฤดูหนาว (4," ฤดูหนาว "," ฤดูหนาว " NAME;ชั้นเรียนทดสอบ
โอเคฉันจะเขียนมากและฉันจะได้รู้จักในเชิงลึกมากขึ้นถ้าฉันต้องการในอนาคต ขอบคุณสำหรับการสนับสนุน Wulin.com