ในปี 1998 Philip Wadler เสนอความแตกต่างระหว่างส่วนต่อประสานแบบคงที่และส่วนต่อประสานแบบไม่คงที่
เท่าที่ฉันเห็นความแตกต่างเพียงอย่างเดียวในการสร้างอินเตอร์เฟสแบบไม่คงที่คือตอนนี้มันสามารถรวมคลาสภายในที่ไม่คงที่ได้ ดังนั้นการเปลี่ยนแปลงจะไม่ทำให้โปรแกรม Java ที่มีอยู่ไม่ถูกต้อง
ตัวอย่างเช่นเขาเสนอวิธีแก้ไขปัญหาเกี่ยวกับนิพจน์ซึ่งไม่ตรงกันระหว่างการแสดงออกว่า "ภาษาของคุณสามารถแสดงออกได้มากแค่ไหน" ในมือข้างหนึ่งและนิพจน์เป็น "คำศัพท์ที่คุณพยายามนำเสนอในภาษาของคุณ" ในอีกทางหนึ่ง .
ตัวอย่างของความแตกต่างระหว่างส่วนต่อประสานแบบคงที่และไม่คงที่สามารถดูได้ในโค้ดตัวอย่างของเขา :
// This code does NOT compile
class LangF<This extends LangF<This>> {
interface Visitor<R> {
public R forNum(int n);
}
interface Exp {
// since Exp is non-static, it can refer to the type bound to This
public <R> R visit(This.Visitor<R> v);
}
}
ข้อเสนอแนะของเขาไม่เคยทำใน Java 1.5.0 ดังนั้นคำตอบอื่น ๆ ทั้งหมดถูกต้อง: ไม่มีความแตกต่างกับส่วนต่อประสานแบบคงที่และไม่คงที่