Re: [問題] Getter and Setter

看板java作者 (Mr. Pan)時間11年前 (2013/07/12 23:57), 編輯推噓2(205)
留言7則, 3人參與, 最新討論串2/5 (看更多)
Java 的 Array 是物件,這點可能是你沒考慮到的問題吧 底下注意,同樣顏色的變數名稱是指向同一個物件 : public static void main(String[] args) { : Foo mFoo = new Foo(); : int[][] arrayA = new int[10][10]; : arrayA = mFoo.getFooArray(); : arrayA[0][0] = 100; : System.out.println(arrayA[0][0]); : mFoo.printFooArray(); : } : public class Foo { : private int[][] fooArray; : public Foo() { : super(); : fooArray = new int[10][10]; : } : public int[][] getFooArray(){ : return fooArray; : } : public printFooArray(){ : System.out.println(fooArray[0][0]); : } : } : 以上印出來卻都是100.... 從 main 的第三行之後, arrayA 已經指向 foo 裡面 fooArray 所指向的 array 了 因此都是 100 是正常的 最主要的原因就是參考到的東西是一樣的,這種情況通常會用 setValue(i,j,val) 和 getValue(i,j) 這種方式來進行,或者 copy 一個 array 傳回去,不要和 fooArray 指向同一個 array 即可。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.208.62

07/13 00:08, , 1F
我懂為什麼是100,但是很多時候在設計Class,常常會需
07/13 00:08, 1F

07/13 00:09, , 2F
要Getter&Setter一些Object的欄位,那這樣不就都要Clon
07/13 00:09, 2F

07/13 00:11, , 3F
e一份物件讓Getter回傳?
07/13 00:11, 3F

07/13 00:12, , 4F
然而,String不是也是物件嗎?可是他卻沒有這樣的問題
07/13 00:12, 4F

07/13 01:05, , 5F
因為Java的String是immutable
07/13 01:05, 5F

07/13 11:35, , 6F
看這篇 不一定需要自己實作
07/13 11:35, 6F

07/13 11:38, , 7F
http://goo.gl/CxiLt 剛貼錯貼到置底去了 :Q
07/13 11:38, 7F
文章代碼(AID): #1Hu2T-JZ (java)
討論串 (同標題文章)
文章代碼(AID): #1Hu2T-JZ (java)