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

Generics เป็นรูปแบบหนึ่งของตัวแปรหลายตัวแปรที่พบในภาษาต่าง ๆ รวมถึงภาษา. NET, Java, Swift และ Rust

11
สร้างวัตถุใหม่จากพารามิเตอร์ประเภทในชั้นเรียนทั่วไป
ฉันกำลังพยายามสร้างวัตถุใหม่ของพารามิเตอร์ประเภทในชั้นเรียนทั่วไปของฉัน ในห้องเรียนของฉันViewฉันฉันมี 2 รายการของวัตถุประเภททั่วไปที่ส่งผ่านเป็นพารามิเตอร์ประเภท แต่เมื่อฉันพยายามที่จะทำnew TGridView()TypeScript พูดว่า: ไม่พบสัญลักษณ์ 'TGridView นี่คือรหัส: module AppFW { // Represents a view export class View<TFormView extends FormView, TGridView extends GridView> { // The list of forms public Forms: { [idForm: string]: TFormView; } = {}; // The list of grids public Grids: { [idForm: string]: …

10
ทำไม Java Collections จึงไม่ลบเมธอดทั่วไป?
ทำไมไม่ Collection.remove (Object o)ทั่วไป? ดูเหมือนว่า Collection<E>จะมีboolean remove(E o); จากนั้นเมื่อคุณพยายามลบ (ตัวอย่าง) โดยไม่ได้ตั้งใจSet<String>แทนที่จะใช้สตริงแต่ละอันจาก a Collection<String>มันจะเป็นข้อผิดพลาดเวลาในการคอมไพล์แทนที่จะเป็นปัญหาการดีบักในภายหลัง

18
รับชนิดของพารามิเตอร์ทั่วไปใน Java พร้อมการสะท้อน
เป็นไปได้ที่จะรับชนิดของพารามิเตอร์ทั่วไปหรือไม่? ตัวอย่าง: public final class Voodoo { public static void chill(List<?> aListWithTypeSpiderMan) { // Here I'd like to get the Class-Object 'SpiderMan' Class typeOfTheList = ???; } public static void main(String... args) { chill(new ArrayList<SpiderMan>()); } }

15
การแปลงรายการทั่วไปเป็นสตริง CSV
ฉันมีรายการค่าจำนวนเต็ม (รายการ) และต้องการสร้างสตริงของค่าที่คั่นด้วยลูกน้ำ นั่นคือรายการทั้งหมดในผลลัพธ์รายการไปยังรายการคั่นด้วยเครื่องหมายจุลภาคเดียว ความคิดของฉัน ... 1. ส่งรายการไปยังวิธีการ 2. ใช้ stringbuilder เพื่อย้ำรายการและต่อท้ายจุลภาค 3. ทดสอบอักขระสุดท้ายและถ้าเป็นจุลภาคให้ลบออก คุณคิดยังไง? วิธีนี้เป็นวิธีที่ดีที่สุดหรือไม่? รหัสของฉันจะเปลี่ยนไปอย่างไรหากฉันต้องการจัดการไม่เพียง แต่จำนวนเต็ม (แผนปัจจุบันของฉัน) แต่ยังรวมถึงสตริง, longs, doubles, bools ฯลฯ ในอนาคต ฉันเดาว่ายอมรับรายการประเภทใดก็ได้
142 c#  generics  .net-3.5 


13
ไม่มีการใช้งาน OrderDictionary ทั่วไป?
ดูเหมือนจะไม่มีการใช้งานทั่วไปของOrderedDictionary(ซึ่งอยู่ในSystem.Collections.Specializedเนมสเปซ) ใน. NET 3.5 มีใครที่ฉันหายไป? ฉันพบการใช้งานที่นั่นเพื่อมอบฟังก์ชันการทำงาน แต่สงสัยว่า / เหตุใดจึงไม่มีการใช้งานทั่วไปนอกกรอบและถ้าใครรู้ว่าเป็นสิ่งที่อยู่ใน.

11
มีคอลเลกชันที่พิมพ์อย่างมากใน Objective-C หรือไม่
ฉันยังใหม่กับการเขียนโปรแกรม Mac / iPhone และ Objective-C ใน C # และ Java เรามี "generics" คลาสการรวบรวมที่สมาชิกสามารถเป็นประเภทที่ประกาศเท่านั้น ตัวอย่างเช่นใน C # Dictionary<int, MyCustomObject> สามารถมีคีย์ที่เป็นจำนวนเต็มและค่าที่เป็นประเภท MyCustomObject เท่านั้น มีกลไกที่คล้ายกันอยู่ใน Objective-C หรือไม่?

5
Mockito: วิธีการทิ่มแทงที่ส่งคืนประเภทด้วย Wild-Cards ที่ถูกผูกไว้
พิจารณารหัสนี้: public class DummyClass { public List<? extends Number> dummyMethod() { return new ArrayList<Integer>(); } } public class DummyClassTest { public void testMockitoWithGenerics() { DummyClass dummyClass = Mockito.mock(DummyClass.class); List<? extends Number> someList = new ArrayList<Integer>(); Mockito.when(dummyClass.dummyMethod()).thenReturn(someList); //Compiler complains about this } } คอมไพเลอร์บ่นเกี่ยวกับบรรทัดที่พยายามทำให้พฤติกรรมสำหรับdummyMethod(). คำแนะนำใด ๆ เกี่ยวกับวิธีการที่ใช้วิธีการขีดฆ่าที่ส่งคืนประเภทที่มีไวด์การ์ดที่มีขอบเขต?

6
<T> (วงเล็บเหลี่ยม) หมายถึงอะไรใน Java
ขณะนี้ฉันกำลังศึกษา Java และเพิ่งถูกนิ่งงันด้วยวงเล็บมุม (&lt;&gt;) พวกเขาหมายถึงอะไรกันแน่? public class Pool&lt;T&gt;{ public interface PoolFactory&lt;T&gt;{ public T createObject(); } this.freeObjects = new ArrayList&lt;T&gt;(maxsize) } อะไร&lt;T&gt;หมายถึง? มันหมายความว่าฉันสามารถสร้างวัตถุประเภทT?
139 java  generics 

7
การใช้โปรโตคอลเป็นประเภทอาร์เรย์และพารามิเตอร์ฟังก์ชันอย่างรวดเร็ว
ฉันต้องการสร้างคลาสที่สามารถจัดเก็บอ็อบเจ็กต์ที่สอดคล้องกับโปรโตคอลบางอย่าง วัตถุควรถูกเก็บไว้ในอาร์เรย์ที่พิมพ์ ตามโปรโตคอลเอกสาร Swift สามารถใช้เป็นประเภท: เนื่องจากเป็นประเภทคุณจึงสามารถใช้โปรโตคอลได้ในหลายที่ที่อนุญาตประเภทอื่น ๆ ได้แก่ : เป็นประเภทพารามิเตอร์หรือประเภทการส่งคืนในฟังก์ชันวิธีการหรือตัวเริ่มต้น เป็นชนิดของค่าคงที่ตัวแปรหรือคุณสมบัติ เป็นประเภทของรายการในอาร์เรย์พจนานุกรมหรือคอนเทนเนอร์อื่น ๆ อย่างไรก็ตามสิ่งต่อไปนี้สร้างข้อผิดพลาดของคอมไพเลอร์: โปรโตคอล 'SomeProtocol' สามารถใช้เป็นข้อ จำกัด ทั่วไปเท่านั้นเนื่องจากมีข้อกำหนดในตัวเองหรือประเภทที่เกี่ยวข้อง คุณควรแก้ปัญหานี้อย่างไร: protocol SomeProtocol: Equatable { func bla() } class SomeClass { var protocols = [SomeProtocol]() func addElement(element: SomeProtocol) { self.protocols.append(element) } func removeElement(element: SomeProtocol) { if let index = find(self.protocols, element) …

5
การทดสอบว่าวัตถุเป็นประเภททั่วไปใน C # หรือไม่
ฉันต้องการทำการทดสอบว่าวัตถุเป็นประเภททั่วไปหรือไม่ ฉันได้ลองทำสิ่งต่อไปนี้แล้วไม่ประสบความสำเร็จ: public bool Test() { List&lt;int&gt; list = new List&lt;int&gt;(); return list.GetType() == typeof(List&lt;&gt;); } ฉันทำอะไรผิดและฉันจะทำการทดสอบนี้ได้อย่างไร?
139 c#  .net  generics  reflection  types 

8
Java: Instanceof และ Generics
ก่อนที่ฉันจะดูโครงสร้างข้อมูลทั่วไปของฉันเพื่อหาดัชนีของค่าฉันต้องการดูว่ามันเป็นเพียงตัวอย่างของประเภทที่thisได้รับพารามิเตอร์หรือไม่ แต่ Eclipse บ่นเมื่อฉันทำสิ่งนี้: @Override public int indexOf(Object arg0) { if (!(arg0 instanceof E)) { return -1; } นี่คือข้อความแสดงข้อผิดพลาด: ไม่สามารถทำการตรวจสอบอินสแตนซ์เทียบกับพารามิเตอร์ type E ใช้แทนลบวัตถุเนื่องจากข้อมูลประเภททั่วไปจะถูกลบเมื่อรันไทม์ จะมีวิธีไหนดีกว่ากัน?

16
แปลงสตริงเป็นชนิด nullable (int, double, etc …)
ฉันพยายามแปลงข้อมูลบางอย่าง น่าเสียดายที่ข้อมูลส่วนใหญ่อยู่ในสตริงซึ่งควรเป็น int หรือ double เป็นต้น ดังนั้นสิ่งที่ฉันมีคือ: double? amount = Convert.ToDouble(strAmount); ปัญหาของวิธีนี้คือถ้า strAmount ว่างเปล่าถ้ามันว่างเปล่าฉันต้องการให้มันเป็นจำนวนว่างดังนั้นเมื่อฉันเพิ่มลงในฐานข้อมูลคอลัมน์จะเป็นโมฆะ ดังนั้นฉันจึงลงเอยด้วยการเขียนสิ่งนี้: double? amount = null; if(strAmount.Trim().Length&gt;0) { amount = Convert.ToDouble(strAmount); } ตอนนี้ใช้ได้ดี แต่ตอนนี้ฉันมีโค้ดห้าบรรทัดแทนที่จะเป็นหนึ่งบรรทัด สิ่งนี้ทำให้อ่านยากขึ้นเล็กน้อยโดยเฉพาะเมื่อฉันมีคอลัมน์จำนวนมากที่ต้องแปลง ฉันคิดว่าฉันจะใช้ส่วนขยายของคลาสสตริงและของทั่วไปเพื่อส่งเป็นประเภทเพราะนี่อาจเป็น double หรือ int หรือยาวก็ได้ ดังนั้นฉันจึงลองทำสิ่งนี้: public static class GenericExtension { public static Nullable&lt;T&gt; ConvertToNullable&lt;T&gt;(this string s, T type) where T: struct …

6
อะไรคือความแตกต่างระหว่าง ? และวัตถุใน Java generics?
ฉันใช้ Eclipse เพื่อช่วยฉันล้างรหัสบางส่วนเพื่อใช้ Java generics อย่างถูกต้อง เวลาส่วนใหญ่มันทำงานได้อย่างยอดเยี่ยมของประเภทอนุมาน แต่มีบางกรณีที่ประเภทอนุมานต้องเป็นประเภททั่วไปที่สุด: วัตถุ แต่ดูเหมือนว่า Eclipse จะให้ทางเลือกแก่ฉันในการเลือกระหว่างประเภทของวัตถุและประเภทของ '?' ดังนั้นความแตกต่างระหว่าง: HashMap&lt;String, ?&gt; hash1; และ HashMap&lt;String, Object&gt; hash2;
137 java  generics 

3
Cast Object เป็น Generic Type เพื่อส่งคืน
มีวิธีการเหวี่ยงวัตถุเพื่อคืนค่าของวิธีการหรือไม่? ฉันลองวิธีนี้ แต่มันให้ข้อยกเว้นเวลาคอมไพล์ในส่วน "instanceof": public static &lt;T&gt; T convertInstanceOfObject(Object o) { if (o instanceof T) { return (T) o; } else { return null; } } ฉันลองใช้อันนี้ด้วย แต่มีข้อยกเว้นรันไทม์ ClassCastException: public static &lt;T&gt; T convertInstanceOfObject(Object o) { try { T rv = (T)o; return rv; } catch(java.lang.ClassCastException e) { return null; …
134 java  generics  casting 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.