Re: [問題] xxx = null

作者: NullLife (廢材大叔有點累)   2014-07-20 00:49:54
※ 引述《dharma (達)》之銘言:
: 問個弱弱的問題
: Java很多時候都會出現 XX YYY = null;
: 例如下面例子
: 原因是什麼啊
: thank
: public class Main {
: public static void main(String args[]) {
: JFrame frame = new JFrame("Welcome");
: String picPath = "C:\\xxx.jpg";
: Icon icon = new ImageIcon(picPath);
: JLabel lab = null;
: JLabel lab = new JLabel("", icon, JLabel.CENTER);
: 省略
: }
: };
不給定初始值無法使用~
但說一個最近我才發現的事情,
那就是如果是全域變數,並且有final修飾詞的時候,
可以在建構子裡頭給定第一次的reference,例如:
class A {
final String kerker;
public A(String kerker) {
this.kerker = kerker;
}
}
所以如果你一開始就寫 final String kerker = null;
你後續就不可能讓kerker去參照其他的refence了
因為有一次我在寫物件的時候,就覺得很奇怪,
為什麼我final的變數一定要宣告的時候馬上給值,
不能new整個物件的時候再來決定嗎?
所以無意間被我try出來 XD
不過我又繼續想那static的field是否能在static{}裡頭處理?
結果是不行,所以我想了想才覺得有點笨,
既然static又final了,那一定有初始值才能提供給其他物件使用。
以上一點心得分享。
作者: dream1124 (全新開始)   2014-07-20 01:14:00
我猜final的變數可以在靜態起始區域才給初始值,試試看吧
作者: cha122977 (CHA)   2014-07-20 01:38:00
A.kerker的時候A還沒初始化好 所以不能這樣寫
作者: dharma (達)   2014-07-20 20:22:00
待理解
作者: kiwatami (悠游自在)   2014-07-20 23:49:00
我也是學了builder pattern之後才知道可以在建構子裡初始化final修飾的變數值XD
作者: PttTime   2014-07-24 19:24:00
同一樓, 只要A.就會立刻執行A裡的static {...}了

Links booklink

Contact Us: admin [ a t ] ucptt.com