Integer.TYPEとInteger.classが 両方でありClass<Integer>、Double.TYPEとDouble.classが 両方であり、オートボクシングを使用してととClass<Double>の間で変換する方法に注意してください。問題は、これが:と両方に当てはまるかどうかですが、 と の間で「変換」できますか?intIntegerdoubleDoublevoidVoid.TYPEVoid.classClass<Void>voidVoid
別の言い方をすれば、次のインターフェースがあるとします。
public interface Foo<T> {
public T doSomething();
}
を実装するクラスは、がボックス化されるため、 の実装で をFoo<Integer>自由に返すことができます。を返す場合も同様です。したがって、 a : の場合、許容される唯一の値は null であるため (ほとんど正当化されない奇妙なリフレクションを行わない限り)、これは必須の を省略して効果的に "ボクシング"できることを意味しますか?intdoSomething()intFoo<Double>doubleFoo<Void>Voidreturn nullVoid