JavaのGenericsでnew T()ができない件の続き

JVMを変えずに糖衣構文で乗りきりたかったってのは分かるんだけど

public class Hoge<T> {
private void hoge() {
T t = new T();
t.foo();
}
}

みたいなコードがあった時に内部的に

abstract protected T __newT();
private void hoge() {
T t = __newT();
t.foo();
}

のように展開して、

Hoge<String> hoge;

とかされたら内部的に

class HogeImpl extends Hoge {
protected String __newT() { new String(); }
}
HogeImpl hoge;

みたいな糖衣構文で逃げてはいけなかった理由は何だったんだろう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


The reCAPTCHA verification period has expired. Please reload the page.