大家写java class的时候是完全封装的么?# Java - 爪哇娇娃
T*e
1 楼
比方说,如果class A中有一个object B,
在set/get方法中,是直接赋值呢,还是先拷贝?
直接赋值:
B getB(){ return b; }
void setB( B b ){ this.b = b ; }
拷贝:
B getB(){ return new B(b); }
void setB( B b ){ this.b = new B(b) ; }
当年用c++编程的时候,除了container class之外,
都是用拷贝,这样可以防止引用对象/数据在别处被误删。
java基本上不存在这个问题。
当然了,如果直接赋值,数据在别处被修改就没法避免。
本来想都用拷贝方法来完全封装的,后来觉得还是直接赋值
比较快(写代码、执行)。不过直接赋值可能会导致调试
比较复杂,而且容易被abuse。
大家都是怎么处理这个问题的?
呵呵,可能我需要读一本Thinking in java之类的书。
by the way, 哪儿有电子版么?或者别的推荐?
多谢了先。
在set/get方法中,是直接赋值呢,还是先拷贝?
直接赋值:
B getB(){ return b; }
void setB( B b ){ this.b = b ; }
拷贝:
B getB(){ return new B(b); }
void setB( B b ){ this.b = new B(b) ; }
当年用c++编程的时候,除了container class之外,
都是用拷贝,这样可以防止引用对象/数据在别处被误删。
java基本上不存在这个问题。
当然了,如果直接赋值,数据在别处被修改就没法避免。
本来想都用拷贝方法来完全封装的,后来觉得还是直接赋值
比较快(写代码、执行)。不过直接赋值可能会导致调试
比较复杂,而且容易被abuse。
大家都是怎么处理这个问题的?
呵呵,可能我需要读一本Thinking in java之类的书。
by the way, 哪儿有电子版么?或者别的推荐?
多谢了先。