作者darkk6 (Mr. Pan)
看板java
标题Re: [问题] Getter and Setter
时间Fri Jul 12 23:57:47 2013
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
1F:推 gn00742754:我懂为什麽是100,但是很多时候在设计Class,常常会需 07/13 00:08
2F:→ gn00742754:要Getter&Setter一些Object的栏位,那这样不就都要Clon 07/13 00:09
3F:→ gn00742754:e一份物件让Getter回传? 07/13 00:11
4F:→ gn00742754:然而,String不是也是物件吗?可是他却没有这样的问题 07/13 00:12
5F:推 coolcomm:因为Java的String是immutable 07/13 01:05
6F:→ TonyQ:看这篇 不一定需要自己实作 07/13 11:35