そのようなインターフェースがあるとします
public interface Foo<Ret, Arg> {
public Ret doSomething(Arg arg);
}
そして、パッケージの可視性のみを持つ具体的な実装クラス。
class FooImpl<Ret, Arg1, Arg2> implements Foo<Ret, Arg>, Bar<Ret, Arg1, Arg2> {
// This class also implements something else making use of Arg2, so you cannot safely remove it
// But nothing relating to Arg2 is needed to create a FooImpl
}
(これがどのように発生するかの例は、2 つのインターフェイスによって宣言されたFoo
and Bar
in FooImpl
forwards メソッドを 1 つの varargs メソッドに実装することです)
FooImpl
ここで、 a を aとして返す静的メソッドが同じパッケージのどこかにあるとしますFoo
。を使用できると考える人がいるかもしれreturn new FooImpl<Ret, Arg1, ?>(...)
ませんが、実際には使用できません (たとえば、具体的なダミー型を として使用する必要がありますArg2
) return new FooImpl<Ret, Arg1, Object>(...)
。
Foo
特にインターフェイスとパッケージの可視性FooImpl
が静的メソッドを使用しているものから効果的に非表示になっているという事実として、これがなぜなのか考えはありますか? 具体的な型が必要なのBar
部分に到達するために、まだある程度リフレクションを使用できるという事実のためですか?FooImpl