java静态类初始化会报错

img


q后面为什么不能加括号,原理是什么,想了一上午也没查到,感觉很奇怪

那你前面的q.w为什么不写成q().w呢
q()是在调用q的构造函数啊
你非要这么搞,就得写成
new (new q()).w()
先new一个q的实例,再访问q实例下的w

因为 new q().w() 返回的是一个 w 对象,而不是一个 q 对象

这样实例化

q.w g = new q.w();

静态内部类,他是依附于类,而不是对象;所以是new q.w(); 可以和静态属性类比