คำถามติดแท็ก primitive

8
ทำไมประเภทของ“ วัตถุ” ที่เป็นโมฆะ?
ฉันกำลังอ่าน 'จาวาสคริปต์ระดับมืออาชีพสำหรับนักพัฒนาเว็บ' บทที่ 4 และมันบอกฉันว่าสิ่งพื้นฐานห้าประเภทคือ: ไม่ได้กำหนดไว้เป็นโมฆะบูลีนตัวเลขและสตริง ถ้าnullเป็นดึกดำบรรพ์ทำไมถึงtypeof(null)กลับมา"object"? นั่นไม่ได้หมายความว่าnullจะถูกส่งผ่านโดยการอ้างอิง (ฉันสมมติว่าที่นี่วัตถุทั้งหมดจะถูกส่งผ่านโดยอ้างอิง) จึงทำให้มันไม่ได้เป็นแบบดั้งเดิม?

6
ทำไม Java Generics ไม่สนับสนุนประเภทดั้งเดิม
เหตุใด generics ใน Java จึงทำงานกับคลาสได้ แต่ไม่ใช่ชนิดพื้นฐาน ตัวอย่างเช่นวิธีนี้ใช้งานได้ดี: List<Integer> foo = new ArrayList<Integer>(); แต่สิ่งนี้ไม่ได้รับอนุญาต: List<int> bar = new ArrayList<int>();
236 java  generics  primitive 

11
การแปลงประเภททั่วไปจากสตริง
ฉันมีคลาสที่ฉันต้องการใช้เพื่อเก็บ "คุณสมบัติ" สำหรับคลาสอื่น คุณสมบัติเหล่านี้มีชื่อและค่า นึกคิดสิ่งที่ฉันต้องการคือการสามารถพิมพ์เพิ่มคุณสมบัติที่เพื่อให้ "ค่า" ที่ส่งคืนนั้นเป็นประเภทที่ฉันต้องการ ประเภทควรเป็นแบบดั้งเดิม คลาสนี้คลาสย่อยเป็นคลาสนามธรรมซึ่งโดยทั่วไปจะเก็บชื่อและค่าเป็นสตริง แนวคิดที่ว่าคลาสย่อยนี้จะเพิ่มความปลอดภัยบางประเภทให้กับคลาสฐาน (รวมทั้งช่วยฉันในการแปลงบางส่วน) ดังนั้นฉันได้สร้างชั้นเรียนซึ่งเป็น (ประมาณ) นี้: public class TypedProperty<DataType> : Property { public DataType TypedValue { get { // Having problems here! } set { base.Value = value.ToString();} } } ดังนั้นคำถามคือ: มีวิธี "ทั่วไป" ในการแปลงจากสตริงกลับเป็นดั้งเดิม? ฉันไม่พบอินเทอร์เฟซทั่วไปที่เชื่อมโยงการแปลงทั่วกระดาน (เช่นITryParsableน่าจะเหมาะอย่างยิ่ง!)

21
ทำไมคนยังคงใช้ประเภทดั้งเดิมใน Java?
ตั้งแต่ Java 5 เรามีการชกมวย / การแยกประเภทดั้งเดิมเพื่อที่intจะห่อjava.lang.Integerและอื่น ๆ และอื่น ๆ ฉันเห็นมากของโครงการ Java ใหม่เมื่อเร็ว ๆ นี้ (ที่แน่นอนต้องมี JRE อย่างน้อย 5 รุ่นหากไม่ได้ 6) ที่มีการใช้intมากกว่าjava.lang.Integerแม้ว่ามันจะสะดวกสบายมากขึ้นที่จะใช้หลังตามที่มีวิธีการช่วยเหลือไม่กี่สำหรับการแปลง ถึงlongค่าและอื่น ๆ ทำไมบางชนิดยังคงใช้ชนิดดั้งเดิมใน Java มีประโยชน์ใด ๆ ที่เป็นรูปธรรม?

7
Java: Integer เท่ากับ vs. ==
ในฐานะของ Java 1.5 คุณสามารถแลกเปลี่ยนIntegerกับintสถานการณ์ได้มากมาย อย่างไรก็ตามฉันพบข้อบกพร่องที่อาจเกิดขึ้นในรหัสของฉันที่ทำให้ฉันประหลาดใจเล็กน้อย รหัสต่อไปนี้: Integer cdiCt = ...; Integer cdsCt = ...; ... if (cdiCt != null && cdsCt != null && cdiCt != cdsCt) mismatch = true; ดูเหมือนว่าจะตั้งค่าไม่ตรงกันอย่างไม่ถูกต้องเมื่อค่าเท่ากันแม้ว่าฉันจะไม่สามารถระบุได้ภายใต้สถานการณ์ใด ฉันตั้งเบรกพอยต์ใน Eclipse และเห็นว่าIntegerค่าทั้ง 137 และฉันตรวจสอบการแสดงออกบูลีนและมันบอกว่ามันเป็นเท็จ แต่เมื่อฉันก้าวข้ามมันก็ตั้งค่าไม่ตรงกันเป็นจริง การเปลี่ยนเงื่อนไขเป็น: if (cdiCt != null && cdsCt != null && !cdiCt.equals(cdsCt)) แก้ไขปัญหา มีใครเล่าให้ฟังว่าทำไมสิ่งนี้ถึงเกิดขึ้นได้บ้าง? …

10
Java เทียบเท่ากับ long long ที่ไม่ได้ลงนาม?
ใน C ++ ฉันสนุกกับการเข้าถึงจำนวนเต็ม 64 บิตที่ไม่ได้ลงชื่อผ่านunsigned long long intหรือผ่านuint64_tหรือผ่านทางตอนนี้ใน Java longs คือ 64 บิตฉันรู้แล้ว อย่างไรก็ตามพวกเขามีการลงนาม มี long (long) ที่ไม่ได้ลงนามเป็น Java แบบดั้งเดิมหรือไม่? ฉันจะใช้มันได้อย่างไร?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.