オートボクシングと型推論を混同していると思います。
型推論は、メソッドを呼び出すときに使用される変数から、コンパイラがジェネリック メソッドで使用する必要がある型を独自に判断できる場合です。
たとえば、次のメソッドがあるとします。
public <T extends SomeClass> T process(T obj) {
// call some methods of SomeClass on obj to process it here
return obj;
}
そしてそれを次のように呼び出します:
SomeChildClass a = new SomeChildClass(); // SomeChildClass extends SomeClass
a = process(a);
推論される型は SomeChildClass になります。
例のように、型はパラメーターまたは戻り値の型から推測できます。しかし、コンパイラがどの型を使用すべきかが常に明らかであるとは限りません。その場合は、説明した方法を使用して型を強制できthis.<Double>getAnything(int flag)
ます。これは通常、次のような状況で発生します。
public <T> List<T> getSomeList() {
// implementation
}
public void processList(List<SomeClass> list) {
// implementation
}
と呼び出し
processList(getSomeList()); // compiler error: cannot convert List<Object> to List<SomeClass>
このような場合、型パラメータを強制する必要があるかもしれません。
以上のことを踏まえて、polygenelubricants があなたのコードに関していくつかの非常に良い点を指摘し、オートボクシングとは何かを説明しているので、polygenelubricants が言ったことすべてを考慮してください (int の場合は Integer、double の場合は Double などのプリミティブ ラッパー クラスに関連しています)。