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 では実現しませんでした。したがって、他のすべての答えは正しいです。静的および非静的のネストされたインターフェースに違いはありません。