คำหลักชั่วคราวใน Java: มันคืออะไรและทำงานอย่างไร
เผยแพร่แล้ว: 2022-03-06เช่นเดียวกับภาษาโปรแกรมอื่น ๆ Java Programming Language มีรายการคำสงวนที่มีความหมายเฉพาะ ชุดคำ 52 คำที่ Java สงวนไว้นี้เรียกว่าคำหลัก เนื่องจากมีความหมายที่กำหนดไว้ล่วงหน้า โปรแกรมเมอร์จึงไม่สามารถใช้คีย์เวิร์ดเพื่อตั้งชื่อคลาส วัตถุ ตัวแปร และตัวระบุอื่นๆ ได้ หนึ่งใน 52 คีย์เวิร์ดเหล่านี้เป็นคีย์เวิร์ดชั่วคราว ซึ่งจะเป็นจุดสนใจของบล็อกของเรา!
สารบัญ
การทำความเข้าใจคีย์เวิร์ดชั่วคราวใน Java
Transient เป็นหนึ่งในตัวปรับแต่งที่มีประโยชน์มากกว่าที่มีอยู่ในภาษาการเขียนโปรแกรม Java บทบาทหลักของคีย์เวิร์ดชั่วคราวมาในกรณีของการทำให้เป็นอันดับ ตัวแก้ไขชั่วคราวสามารถใช้กับสมาชิกภาคสนามของคลาสเพื่อปิดการทำให้เป็นอนุกรมของสมาชิกเฉพาะเหล่านี้
พูดง่ายๆ คือ โปรแกรมเมอร์สามารถใช้คีย์เวิร์ดชั่วคราวใน Java เพื่อหลีกเลี่ยงการทำให้เป็นอนุกรม หากโปรแกรมเมอร์กำหนดอ็อบเจ็กต์เฉพาะของโครงสร้างข้อมูลใด ๆ ให้เป็นแบบชั่วคราว สิ่งนั้นจะไม่ถูกทำให้เป็นอนุกรม ด้วยเหตุนี้ คุณสามารถใช้คีย์เวิร์ดชั่วคราวเพื่อระบุ JVM (Java Virtual Machine) ว่าตัวแปรชั่วคราวของคุณจะไม่เป็นส่วนหนึ่งของสถานะคงอยู่ของอ็อบเจ็กต์
ลองทำความเข้าใจการทำงานของคีย์เวิร์ดชั่วคราวใน Java โดยใช้ตัวอย่างพื้นฐาน อันดับแรก เราจะสร้างคลาสที่อยู่และกำหนดแอตทริบิวต์สามอย่างสำหรับคลาส – streetName, areaName และ houseNumber เราจะเก็บไว้ชั่วคราวเนื่องจากเราไม่ต้องการจัดเก็บหรือบันทึกแอตทริบิวต์ที่สาม – houseNumber
class Address ใช้ Serializable { ชื่อถนน สตริงส่วนตัว ; พื้นที่สตริงส่วนตัว ชื่อ; สตริง houseNumber ชั่วคราวส่วนตัว;
//เซ็ตเตอร์และเก็ตเตอร์ } |
ตอนนี้ มาทำให้ลำดับอินสแตนซ์ของคลาสที่อยู่กันเป็นลำดับ
ลอง { ObjectOutputStream oos = ObjectOutputStream ใหม่ (FileOutputStream ใหม่ (“addressinfo.ser”)); ที่อยู่ a = ที่อยู่ใหม่ (); a.setstreetName("MIG"); a.setareaName("วิกาสนคร"); emp.sethouseNumber(“110”); //เรียงลำดับวัตถุ oos.writeObject(a); oos.close(); } จับ (ข้อยกเว้น e) { System.out.println(จ); } |
หากรหัสของเราทำงานอย่างถูกต้อง ข้อมูล 'houseNumber' จะไม่ได้รับการบันทึกเนื่องจากเรากำหนดให้เป็นข้อมูลชั่วคราว ตอนนี้ เราจะพยายามดีซีเรียลไลซ์ข้อมูลกลับเข้าไปในออบเจกต์เดิม และดูว่าข้อมูลถูกบันทึกไว้หรือไม่
ลอง { ObjectInputStream o = ObjectInputStream ใหม่ (FileInputStream ใหม่ (“addressinfo.ser”)); //อ่านวัตถุย้อนหลัง ที่อยู่ readAddressInfo = (ที่อยู่) o.readObject(); System.out.println(readAddressInfo.getstreetName()); System.out.println(readAddressInfo.getareaName()); System.out.println(readAddressInfo.gethouseNumber()); o.close(); } จับ (ข้อยกเว้น e) { System.out.println(จ); } |
หากคุณเรียกใช้โปรแกรม Java ด้านบน คุณจะได้รับผลลัพธ์ต่อไปนี้:
MIG
วิกาสนคร
โมฆะ
อย่างที่คุณเห็น ข้อมูล 'houseNumber' ไม่ได้รับการบันทึกเป็นสถานะถาวรเนื่องจากการทำให้เป็นอนุกรม และนั่นคือเหตุผลที่เราได้รับค่า 'null' เป็นผลลัพธ์ นี่เป็นเหตุผลว่าทำไมจึงใช้คีย์เวิร์ดชั่วคราว เพื่อเก็บค่าลงในตัวแปรในลักษณะที่ไม่ถาวรแต่เป็นแบบชั่วคราว
กรณีการใช้งานสำหรับคำหลัก 'ชั่วคราว' ใน Java
เมื่อคุณเข้าใจคีย์เวิร์ดชั่วคราวแล้วและมันทำงานอย่างไร คำถามเชิงตรรกะต่อไปที่จะเกิดขึ้นคือ เราจะใช้คีย์เวิร์ดชั่วคราวเมื่อใด
มาขยายขอบเขตการเรียนรู้ของเราเกี่ยวกับคีย์เวิร์ดชั่วคราวโดยพิจารณาอย่างลึกซึ้งถึงสถานการณ์บางอย่างที่คุณจะได้รับประโยชน์จากการใช้คีย์เวิร์ดชั่วคราว
ต่อไปนี้คือกรณีการใช้งานทั่วไปที่คุณควรจำไว้:
- กรณีการใช้งานครั้งแรกของคีย์เวิร์ดชั่วคราวคือในระหว่างสถานการณ์ที่คุณอาจมีฟิลด์ข้อมูลที่คำนวณหรือได้รับมาจากฟิลด์อื่นภายในอินสแตนซ์ของคลาส ด้วยเหตุนี้ ฟิลด์เหล่านี้จึงต้องถูกคำนวณโดยทางโปรแกรม และฟิลด์เหล่านี้ขึ้นอยู่กับค่าอื่นๆ นั่นคือเหตุผลที่ แทนที่จะมีฟิลด์ดังกล่าวแบบถาวร ฟิลด์เหล่านี้อาจไม่สามารถทำให้เป็นอนุกรมได้โดยใช้คีย์เวิร์ดชั่วคราว ตัวอย่างของค่าชั่วคราวดังกล่าวที่คำนวณจากตัวเลขอื่นๆ อาจรวมถึงค่าตามเวลาประทับ ค่าตามเปอร์เซ็นต์ ฯลฯ ในทุกกรณี คุณกำลังคำนวณค่าของตัวแปรตามค่าที่มีอยู่ในปัจจุบัน
- กรณีการใช้งานที่สำคัญอีกกรณีหนึ่งอาจเป็นเมื่อคุณทำงานกับข้อมูลความปลอดภัยประเภทใดก็ตามที่ไม่ควรรั่วไหลออกนอก JVM ไม่ว่าในกรณีใดๆ จากนั้นจะไม่สามารถทำให้เป็นอนุกรมได้โดยใช้คีย์เวิร์ดชั่วคราว
- ฟิลด์ที่ไม่ได้ทำเครื่องหมายเป็น "ซีเรียลไลซ์ได้" ภายใน Java Development Kit สามารถใช้กับคีย์เวิร์ดชั่วคราวได้ สิ่งสำคัญที่ควรทราบในที่นี้คือคลาส Java ทั้งหมดที่ไม่ได้ใช้อินเทอร์เฟซที่ทำให้ซีเรียลไลซ์ได้นั้นไม่สามารถทำให้เป็นอนุกรมได้เนื่องจากไม่ได้อ้างอิงภายในคลาสที่ทำให้ซีเรียลไลซ์ได้ ด้วยเหตุนี้ สิ่งเหล่านี้อาจส่ง "java.io.NotSerializableException" ออกไป หากไม่ทำเครื่องหมาย "ชั่วคราว" ก่อนทำให้เป็นอนุกรมคลาสหลัก
- และสุดท้าย มีบางครั้งที่การเรียงลำดับฟิลด์บางฟิลด์ไม่สมเหตุสมผล ตัวอย่างเช่น หากคุณได้เพิ่มการอ้างอิงตัวบันทึกในโค้ดของคุณ คุณจะไม่ต้องการให้ข้อมูลเป็นอนุกรม คุณควรจัดลำดับข้อมูลที่แสดงถึงสถานะของอินสแตนซ์ ในทางกลับกัน คนตัดไม้ไม่ได้เป็นตัวแทนของสถานะใด ๆ ดังนั้นจึงไม่มีประโยชน์ในการทำให้เป็นอนุกรม ดังนั้น จึงควรใช้ร่วมกับคีย์เวิร์ดชั่วคราว
สรุปแล้ว
กรณีการใช้งานที่กล่าวถึงข้างต้นไม่ได้ครอบคลุมทั้งหมด ทดลองกับคีย์เวิร์ดชั่วคราวและคิดกรณีการใช้งานของคุณเอง ท้ายที่สุด คีย์เวิร์ดถูกสร้างขึ้นสำหรับโปรแกรมเมอร์ และคุณจะสามารถใช้คีย์เวิร์ดส่วนใหญ่ได้ก็ต่อเมื่อคุณรู้ว่ามันทำงานอย่างไรและหมายถึงอะไร
ด้วยเหตุนี้ เราจึงมาถึงจุดสิ้นสุดของบล็อกนี้เกี่ยวกับคีย์เวิร์ดชั่วคราวใน Java นี่เป็นหนึ่งในแนวคิดเบื้องต้นที่คุณต้องมองหาเพื่อที่จะเติบโตในอาชีพการพัฒนาซอฟต์แวร์ของคุณ สาขาการพัฒนาซอฟต์แวร์มีพลวัตอย่างมาก แต่ก็ยินดีเป็นอย่างยิ่งหากคุณพร้อมที่จะดึงถุงเท้าและพยายามอย่างเต็มที่!
ที่ upGrad เราได้ให้คำปรึกษาและแนะนำนักเรียนจากทั่วโลก ซึ่งเป็นของโดเมนต่างๆ และช่วยให้พวกเขาเริ่มต้นอาชีพในการพัฒนาซอฟต์แวร์ PGP ของเรา ในการพัฒนาซอฟต์แวร์ - ความเชี่ยวชาญด้านการพัฒนาแบบครบวงจร ได้รับการออกแบบมาสำหรับนักศึกษาใหม่และมืออาชีพที่มีประสบการณ์ นอกจากผู้สอนที่เชี่ยวชาญและสื่อการเรียนรู้ที่ล้ำสมัยแล้ว คุณยังได้รับเพื่อนร่วมงานที่มีความสามารถ การสนับสนุนตำแหน่งที่ครอบคลุม และการให้คำปรึกษาแบบตัวต่อตัวกับผู้นำในอุตสาหกรรม ดังนั้นตรวจสอบเนื้อหาหลักสูตรและลงทะเบียนเร็ว ๆ นี้!
1. คีย์เวิร์ดชั่วคราวใน Java คืออะไร?
คีย์เวิร์ดชั่วคราวใน Java สามารถใช้เพื่อหลีกเลี่ยงการทำให้อ็อบเจ็กต์เป็นอนุกรม เมื่อใช้คีย์เวิร์ดชั่วคราว คุณจะมั่นใจได้ว่าค่าที่เก็บไว้โดยฟิลด์นั้นจะไม่คงอยู่ตลอดไป
2. คีย์เวิร์ดชั่วคราวสามารถใช้กับอิลิเมนต์ใดใน Java ได้?
คุณสามารถใช้คีย์เวิร์ดชั่วคราวใน Java เพื่อทำให้คลาส ตัวแปร อ็อบเจ็กต์ หรือฟิลด์ไม่ซีเรียลไลซ์
3. คีย์เวิร์ดชั่วคราวและคีย์เวิร์ดระเหยต่างกันอย่างไรใน Java
คีย์เวิร์ดชั่วคราวถูกใช้เพื่อหลีกเลี่ยงกระบวนการซีเรียลไลซ์เซชั่น ในขณะที่คีย์เวิร์ดผันผวนจะใช้กับตัวแปรเพื่อไม่ให้ถูกเก็บไว้ในหน่วยความจำหลัก