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;

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

コメントを残す

メールアドレスが公開されることはありません。

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*