Năm 1998, Philip Wadler đã đề xuất một sự khác biệt giữa giao diện tĩnh và giao diện không tĩnh.
Theo như tôi có thể thấy, sự khác biệt duy nhất trong việc làm cho một giao diện không tĩnh là bây giờ nó có thể bao gồm các lớp bên trong không tĩnh; vì vậy thay đổi sẽ không hiển thị bất kỳ chương trình Java hiện có nào.
Ví dụ, ông đã đề xuất một giải pháp cho Vấn đề Biểu hiện , mặt khác là sự không phù hợp giữa biểu thức là "ngôn ngữ của bạn có thể diễn tả được bao nhiêu" và mặt khác là "thuật ngữ bạn đang cố gắng thể hiện bằng ngôn ngữ của mình" .
Một ví dụ về sự khác biệt giữa các giao diện lồng nhau tĩnh và không tĩnh có thể được nhìn thấy trong mã mẫu của anh ấy :
// 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);
}
}
Đề xuất của ông không bao giờ được thực hiện trong Java 1.5.0. Do đó, tất cả các câu trả lời khác đều đúng: không có sự khác biệt nào đối với các giao diện lồng nhau tĩnh và không tĩnh.