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

อินเทอร์เฟซหมายถึงจุดที่กำหนดของการโต้ตอบกับส่วนประกอบ ส่วนต่อประสานสามารถใช้งานได้ทั้งระดับฮาร์ดแวร์และซอฟต์แวร์ --- นอกจากนี้ยังอ้างถึงองค์ประกอบภาษา `interface 'ซึ่งเป็นข้อยกเว้นเพียงอย่างเดียวของการสืบทอดเดี่ยวใน Java, C # และภาษาที่คล้ายกัน

3
การใช้วิธีการ "เริ่มต้น" ที่กำหนดไว้ในอินเทอร์เฟซคืออะไร?
ในอินเทอร์เฟซการรวบรวมฉันพบเมธอดชื่อหนึ่งremoveIf()ที่มีการนำไปใช้งาน default boolean removeIf(Predicate<? super E> filter) { Objects.requireNonNull(filter); boolean removed = false; final Iterator<E> each = iterator(); while (each.hasNext()) { if (filter.test(each.next())) { each.remove(); removed = true; } } return removed; } ฉันต้องการทราบว่ามีวิธีใดในการกำหนด method body ในอินเทอร์เฟซหรือไม่? คีย์เวิร์ด คืออะไรdefaultและทำงานอย่างไร?
91 java  interface  java-8 

6
C # - ไม่สามารถแปลงประเภทรายการ <Product> เป็นรายการ <IProduct> โดยปริยาย
ฉันมีโปรเจ็กต์ที่มีคำจำกัดความอินเทอร์เฟซทั้งหมดของฉัน: RivWorks อินเตอร์เฟส ฉันมีโปรเจ็กต์ที่ฉันกำหนดการฝังตัวที่เป็นรูปธรรม: RivWorks.DTO ฉันเคยทำสิ่งนี้มาหลายร้อยครั้งแล้ว แต่ด้วยเหตุผลบางอย่างตอนนี้ฉันได้รับข้อผิดพลาดนี้: ไม่สามารถแปลงชนิด 'System.Collections.Generic.List &lt;RivWorks.DTO.Product&gt;' เป็น 'System.Collections.Generic.List โดยปริยาย &lt;RivWorks.Interfaces.DataContracts.IProduct&gt;' โดยปริยาย นิยามอินเทอร์เฟซ (แบบย่อ): namespace RivWorks.Interfaces.DataContracts { public interface IProduct { [XmlElement] [DataMember(Name = "ID", Order = 0)] Guid ProductID { get; set; } [XmlElement] [DataMember(Name = "altID", Order = 1)] long alternateProductID { get; set; } …

5
PHP 7 อินเทอร์เฟซการบอกใบ้ประเภทส่งคืนและตัวเอง
อัปเดต : ขณะนี้ PHP 7.4 รองรับความแปรปรวนร่วมและความแตกต่างซึ่งแก้ไขปัญหาสำคัญที่เกิดขึ้นในคำถามนี้ ฉันพบปัญหาบางอย่างกับการใช้คำใบ้ประเภทการส่งคืนใน PHP 7 ความเข้าใจของฉันคือการบอกใบ้: selfหมายความว่าคุณตั้งใจให้คลาสการใช้งานกลับมาเอง ดังนั้นฉันจึงใช้: selfอินเทอร์เฟซเพื่อระบุสิ่งนั้น แต่เมื่อฉันพยายามใช้อินเทอร์เฟซจริงฉันพบข้อผิดพลาดเกี่ยวกับความเข้ากันได้ ต่อไปนี้เป็นการสาธิตง่ายๆเกี่ยวกับปัญหาที่ฉันพบ: interface iFoo { public function bar (string $baz) : self; } class Foo implements iFoo { public function bar (string $baz) : self { echo $baz . PHP_EOL; return $this; } } (new Foo ()) …

7
จะค้นหาได้อย่างไรว่าคลาสใดใช้อินเทอร์เฟซเฉพาะใน Eclipse
ฉันมีแอปพลิเคชันเป็นไฟล์ JAR ที่มีการอ้างอิงมากมาย ด้วยเหตุผลบางประการฉันจำเป็นต้องแยกไลบรารีหนึ่งไลบรารีและเปิดขึ้นด้วย Eclipse สำหรับอินเทอร์เฟซที่กำหนดในโปรเจ็กต์มีวิธีค้นหาคลาสที่ใช้งานหรือไม่ อาจเป็นกรณีที่อินเทอร์เฟซถูกนำไปใช้ในไลบรารีอื่นที่ฉันยังไม่ได้ถอดรหัส เป็นไปได้หรือไม่ที่จะทำสิ่งนี้สำหรับชั้นเรียนประเภทนี้


2
ตัวดำเนินการ 'instanceof' ทำงานแตกต่างกันไปสำหรับอินเทอร์เฟซและคลาส
ฉันต้องการทราบเกี่ยวกับพฤติกรรมต่อไปนี้ของinstanceofตัวดำเนินการใน Java interface C {} class B {} public class A { public static void main(String args[]) { B obj = new B(); System.out.println(obj instanceof A); //Gives compiler error System.out.println(obj instanceof C); //Gives false as output } } ทำไมจึงเป็นเช่นนั้น? ไม่มีความสัมพันธ์ระหว่างinterface Cและclass Bแต่ให้เท็จในขณะที่obj instanceof Aให้คอมไพเลอร์ผิดพลาด?

7
Java - ชื่อเมธอดชนกันในการใช้งานอินเตอร์เฟส
ถ้าฉันมีสองอินเทอร์เฟซทั้งสองอย่างแตกต่างกันในวัตถุประสงค์ของพวกเขา แต่มีลายเซ็นวิธีเดียวกันฉันจะทำให้คลาสใช้ทั้งสองอย่างโดยไม่ถูกบังคับให้เขียนเมธอดเดียวที่ทำหน้าที่ทั้งอินเทอร์เฟซและการเขียนตรรกะที่ซับซ้อนในเมธอด การใช้งานที่ตรวจสอบว่ามีการเรียกใช้วัตถุประเภทใดและเรียกใช้รหัสที่เหมาะสม? ใน C # สิ่งนี้ถูกเอาชนะโดยสิ่งที่เรียกว่าการใช้งานอินเทอร์เฟซที่ชัดเจน มีวิธีที่เทียบเท่าใน Java หรือไม่?

14
คลาสนามธรรมเทียบกับอินเตอร์เฟสใน Java
ฉันถูกถามคำถามฉันต้องการรับคำตอบของฉันตรวจสอบที่นี่ ถาม:ในสถานการณ์ใดที่เหมาะสมกว่าในการขยายคลาสนามธรรมมากกว่าการใช้อินเทอร์เฟซ ตอบ:หากเราใช้รูปแบบวิธีการออกแบบเทมเพลต ฉันถูกไหม ? ขออภัยหากไม่สามารถระบุคำถามได้อย่างชัดเจน ฉันรู้ความแตกต่างพื้นฐานระหว่างคลาสนามธรรมและอินเทอร์เฟซ 1) ใช้คลาสนามธรรมเมื่อความต้องการเป็นเช่นนั้นเราจำเป็นต้องใช้ฟังก์ชันเดียวกันในทุกคลาสย่อยสำหรับการดำเนินการเฉพาะ (ใช้วิธีการ) และฟังก์ชันการทำงานที่แตกต่างกันสำหรับการดำเนินการอื่น ๆ (เฉพาะลายเซ็นของวิธีการเท่านั้น) 2) ใช้อินเทอร์เฟซหากคุณต้องการกำหนดลายเซ็นให้เหมือนกัน (และการนำไปใช้งานที่แตกต่างกัน) เพื่อให้คุณสามารถปฏิบัติตามการใช้งานอินเทอร์เฟซได้ 3) เราสามารถขยายคลาสนามธรรมได้สูงสุดหนึ่งคลาส แต่สามารถใช้งานได้มากกว่าหนึ่งอินเทอร์เฟซ การย้ำคำถาม:มีสถานการณ์อื่น ๆ นอกเหนือจากที่กล่าวมาข้างต้นหรือไม่โดยเฉพาะที่เราต้องการให้ใช้คลาสนามธรรม (สิ่งที่เห็นคือรูปแบบวิธีการออกแบบเทมเพลตเป็นแนวคิดตามแนวคิดนี้เท่านั้น) อินเทอร์เฟซเทียบกับคลาสนามธรรม การเลือกระหว่างสองสิ่งนี้ขึ้นอยู่กับว่าคุณต้องการทำอะไร แต่โชคดีสำหรับเรา Erich Gamma สามารถช่วยเราได้เล็กน้อย เช่นเคยมีการปิด, อินเตอร์เฟซที่ช่วยให้คุณมีอิสระในเรื่องเกี่ยวกับชั้นฐานกับระดับนามธรรมจะช่วยให้คุณมีอิสระในการเพิ่มวิธีการใหม่ในภายหลัง - เอริชแกมมา คุณไม่สามารถเปลี่ยนอินเทอร์เฟซได้โดยไม่ต้องเปลี่ยนสิ่งอื่น ๆ มากมายในโค้ดของคุณดังนั้นวิธีเดียวที่จะหลีกเลี่ยงปัญหานี้ได้คือการสร้างอินเทอร์เฟซใหม่ทั้งหมดซึ่งอาจไม่ใช่สิ่งที่ดีเสมอไป Abstract classesควรใช้เป็นหลักสำหรับวัตถุที่เกี่ยวข้องอย่างใกล้ชิด Interfacesจะดีกว่าในการจัดหาฟังก์ชันการทำงานทั่วไปสำหรับคลาสที่ไม่เกี่ยวข้อง

2
การทำความเข้าใจอินเทอร์เฟซ Covariant และ Contravariant ใน C #
ฉันเจอสิ่งเหล่านี้ในหนังสือเรียนที่ฉันอ่านเรื่อง C # แต่ฉันมีปัญหาในการทำความเข้าใจอาจเนื่องมาจากไม่มีบริบท มีคำอธิบายที่สั้นกระชับเกี่ยวกับสิ่งที่พวกเขาคืออะไรและสิ่งที่มีประโยชน์สำหรับที่นั่นหรือไม่? แก้ไขเพื่อความกระจ่าง: อินเตอร์เฟซ Covariant: interface IBibble&lt;out T&gt; . . อินเทอร์เฟซ Contravariant: interface IBibble&lt;in T&gt; . .

2
การจัดการคอมไพเลอร์ของตัวแปรอินเทอร์เฟซโดยนัยมีการบันทึกไว้หรือไม่?
ฉันถามคำถามที่คล้ายกันเกี่ยวกับตัวแปรอินเทอร์เฟซโดยนัยเมื่อไม่นานมานี้ ที่มาของคำถามนี้คือข้อบกพร่องในโค้ดของฉันเนื่องจากฉันไม่ทราบถึงการมีอยู่ของตัวแปรอินเทอร์เฟซโดยนัยที่สร้างโดยคอมไพเลอร์ ตัวแปรนี้ได้รับการสรุปเมื่อขั้นตอนที่เป็นเจ้าของเสร็จสิ้น สิ่งนี้ทำให้เกิดข้อผิดพลาดเนื่องจากอายุการใช้งานของตัวแปรนานกว่าที่ฉันคาดไว้ ตอนนี้ฉันมีโครงการง่ายๆที่จะแสดงพฤติกรรมที่น่าสนใจบางอย่างจากคอมไพเลอร์: program ImplicitInterfaceLocals; {$APPTYPE CONSOLE} uses Classes; function Create: IInterface; begin Result := TInterfacedObject.Create; end; procedure StoreToLocal; var I: IInterface; begin I := Create; end; procedure StoreViaPointerToLocal; var I: IInterface; P: ^IInterface; begin P := @I; P^ := Create; end; begin StoreToLocal; StoreViaPointerToLocal; end. StoreToLocalรวบรวมตามที่คุณคิด ตัวแปรท้องถิ่นIผลฟังก์ชั่นที่จะถูกส่งเป็นนัยพารามิเตอร์var …

10
มีการควบคุมปฏิทินสำเร็จรูปสำหรับแอป iPhone หรือไม่? [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันกำลังสร้างแอปพลิเคชันสำหรับ iPhone ที่จะแสดงกิจกรรมที่กำลังจะเกิดขึ้นและในอดีต ฉันตัดสินใจเลือกมุมมองรายการ แต่แล้วฉันก็รู้ว่าปฏิทิน (เช่นเดียวกับที่แสดงในมุมมอง "เดือน" ในแอปพลิเคชันปฏิทินในตัว) จะเหมาะสมที่สุด อย่างไรก็ตามแนวทางการเชื่อมต่อกับมนุษย์ของ iPhone กล่าวถึงตัวเลือกวันที่ไม่ใช่ปฏิทินดังนั้นฉันเชื่อว่าไม่มีอะไรที่เหมือนกับว่านอกกรอบ เป็นเช่นนั้นจริงหรือ? ถ้าเป็นเช่นนั้นมีใครทราบถึงการควบคุมของบุคคลที่สามที่สามารถใช้ได้หรือไม่? (ฉันเขียนเองได้ แต่ฉันอยากจะเตรียมของให้พร้อมเพราะนี่คือแผนโครงการเดิม)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.