ローカルのメソッドの呼び出しで型パラメータを明示する場合、thisが必要。
型パラメータを受け取るメソッドで型パラメータを明示する場合、メソッド呼び出しの前に「<型>」をつければOKですが、ローカルのメソッドの呼び出しで明示する場合、「this.<型>」とする必要があります。
class Sample { // 型パラメータを受け取るメソッド <X> void test(X args) {} public void main( String[] args ) { // ローカルメソッドの呼び出しで型パラメータを明示する。 test("a"); // <Object>test("a"); // これはコンパイルエラー this.<Object>test("a"); // 「this.」を明示する必要がある } }
staticインポートしたstaticメソッドでも同様。
// staticインポートしたstaticメソッドも同様。 asList("a", "b"); // <Object>asList("a", "b"); // これはコンパイルエラー Arrays.<Object>asList("a", "b"); // OK
若干メンドイ。