คำถามติดแท็ก type-safety


10
ความปลอดภัยของประเภท: นักแสดงที่ไม่ได้ตรวจสอบ
ในไฟล์บริบทของฤดูใบไม้ผลิแอปพลิเคชันของฉันฉันมีลักษณะดังนี้: <util:map id="someMap" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.lang.String"> <entry key="some_key" value="some value" /> <entry key="some_key_2" value="some value" /> </util:map> ในคลาส java การใช้งานมีลักษณะดังนี้: private Map<String, String> someMap = new HashMap<String, String>(); someMap = (HashMap<String, String>)getApplicationContext().getBean("someMap"); ใน Eclipse ฉันเห็นคำเตือนที่แจ้งว่า: ความปลอดภัยของประเภท: นักแสดงที่ไม่ได้ตรวจสอบจาก Object ไปยัง HashMap ฉันทำอะไรผิด? ฉันจะแก้ไขปัญหาได้อย่างไร


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

15
การแบ่งแยกสหภาพแรงงานใน C #
[หมายเหตุ: คำถามนี้มีชื่อเดิมว่า " C (ish) style union ใน C # " แต่ตามที่ความคิดเห็นของ Jeff แจ้งให้ฉันทราบว่าโครงสร้างนี้เรียกว่า 'การรวมกลุ่มที่เลือกปฏิบัติ'] ขอโทษคำฟุ่มเฟือยของคำถามนี้ มีคำถามที่ทำให้เกิดเสียงคล้าย ๆ กันอยู่สองข้อใน SO แต่ดูเหมือนว่าพวกเขาจะมุ่งเน้นไปที่ประโยชน์ในการประหยัดหน่วยความจำของสหภาพหรือใช้เพื่อการทำงานร่วมกัน นี่คือตัวอย่างของคำถามดังกล่าว ความปรารถนาของฉันที่จะมีสิ่งที่เป็นสหภาพแตกต่างกันบ้าง ฉันกำลังเขียนโค้ดบางอย่างในขณะนี้ซึ่งสร้างวัตถุที่มีลักษณะเช่นนี้ public class ValueWrapper { public DateTime ValueCreationDate; // ... other meta data about the value public object ValueA; public object ValueB; } สิ่งที่ค่อนข้างซับซ้อนฉันคิดว่าคุณจะเห็นด้วย เป็นสิ่งที่ValueAสามารถเป็นของบางประเภทไม่กี่ (สมมติว่าstring, intและFoo(ซึ่งเป็นชั้นเรียน) …

14
ใน C # ทำไมไม่สามารถเก็บวัตถุ List <string> ในตัวแปร List <object> ได้
ดูเหมือนว่าวัตถุ List ไม่สามารถเก็บไว้ในตัวแปร List ใน C # และไม่สามารถแคสต์อย่างชัดเจนด้วยวิธีนั้นได้ List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = sl; ผลลัพธ์ในไม่สามารถแปลงประเภทโดยปริยายSystem.Collections.Generic.List&lt;string&gt;เป็นSystem.Collections.Generic.List&lt;object&gt; แล้ว ... List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = (List&lt;object&gt;)sl; ผลลัพธ์ในไม่สามารถแปลงประเภทSystem.Collections.Generic.List&lt;string&gt;เป็นSystem.Collections.Generic.List&lt;object&gt; แน่นอนคุณสามารถทำได้โดยดึงทุกอย่างออกจากรายการสตริงและใส่กลับเข้าไปทีละรายการ แต่เป็นวิธีแก้ปัญหาที่ค่อนข้างซับซ้อน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.