在addSelectionListener的方法public void widgetSelected(SelectionEvent e){}中,我用到了label和combo,为什么声明
label和combo这两个变量的时候要用final修饰呢。。否则一直报错还有shell加final修饰有什么意义?
label和combo这两个变量的时候要用final修饰呢。。否则一直报错还有shell加final修饰有什么意义?
你试试就知道了
2.SelectionListener的周期和组件相同,因此一般要远远大于label.
3.当要在SelectionListener中使用label的时候就出现了问题,很有可能label的生命周期已经结束了.因此实际运行时,虚拟机会在SelectionListener中放一个label的副本.
4.此时又会出现一个问题,如果在创建了label的副本后,结果在label生命周期结束前,label又指向别的对象怎么办?(理论上,这样不是不可以,但是这样就会把问题变复杂,也没必要.)
5.所以就需要设置为final,保证label不会再去指向其他的对象.