Re: [問題] xxx = null
※ 引述《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了,那一定有初始值才能提供給其他物件使用。
以上一點心得分享。
--
你只是大大的世界中小小的一個島嶼
在你懷中長大的我們 從未忘記
我要用全部的力氣唱出對你的深情
歌聲中 只是真心的讚美 929 吳志寧
也有感謝和依戀 疼惜和憂煩 全心全意愛你
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.158.25
※ 文章網址: http://www.ptt.cc/bbs/java/M.1405788598.A.32C.html
推
07/20 01:14, , 1F
07/20 01:14, 1F
剛剛又試了一下,發現居然可以!!
於是回想了一下我之前在玩的時候為什麼不行,
因為我習慣在取static的field的時候會冠上class的名字,例如:
class A {
static final String kerker;
static {
A.kerker = "123";
}
}
這樣寫的話 Eclipse 會叫我把final拿掉,
但如果我不冠上class名字,就正常可以使用了,就是:
class A {
static final String kerker;
static {
kerker = "123";
}
}
實際原因有請高手回答,
不過我猜測是加上class名稱,可能會認為你要從外面另一個class來取值,
但實際上我並沒有給A的kerker初始值,所以就出問題了。
※ 編輯: NullLife (123.194.158.25), 07/20/2014 01:28:55
→
07/20 01:38, , 2F
07/20 01:38, 2F
推
07/20 20:22, , 3F
07/20 20:22, 3F
推
07/20 23:49, , 4F
07/20 23:49, 4F
→
07/20 23:49, , 5F
07/20 23:49, 5F
推
07/24 19:24, , 6F
07/24 19:24, 6F
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章