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;
みたいな糖衣構文で逃げてはいけなかった理由は何だったんだろう。