1998'de Philip Wadler statik arayüzler ile statik olmayan arayüzler arasında bir fark önermiştir.
Görebildiğim kadarıyla, bir arabirimi statik olmayan hale getirmedeki tek fark, artık statik olmayan iç sınıfları içerebilmesidir; bu nedenle değişiklik mevcut Java programlarını geçersiz hale getirmez.
Örneğin , bir yandan “diliniz ne kadar ifade edebilir” ifadesi, diğer yandan “kendi dilinizde temsil etmeye çalıştığınız terimler” ifadesi arasındaki uyumsuzluk olan İfade Problemine bir çözüm önerdi. .
Statik ve statik olmayan yuvalanmış arabirimler arasındaki farkın bir örneği, örnek kodunda görülebilir :
// 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);
}
}
Onun önerisi asla Java 1.5.0'da yapılmadı. Bu nedenle, diğer tüm cevaplar doğrudur: statik ve statik olmayan iç içe arabirimler arasında bir fark yoktur.