public interface Foo { void foo(); } public class FooImpl implements Foo { public void foo() { // ... } } ある、Foo という仕様と同時に、Fooに対する実装を提供したとします。普通ですね。 ここで「Fooはプラガブル*1にしたい。実装によって「動的に*2」新しい機能を追加することができるようにしたい。」と考えたとします。 public interface Foo extends ExtenderA, ExtenderB ... { void foo(); } こんなイメージ。Fooのインターフェイスを「動的に」追加したい。しかし、これはJavaの言語仕様上不可能*3なことです。 拡張したければ、Fooを継承して新たなインターフェイスを作るしかありません。 public interfa