Java编程: 成员为数组类型,怎样对其操作才算合理?

2013-03-05 05:54:08 +08:00
 platoo
刚刚接触Java没多久,在实现一个类的时候,有一个成员(field)是数组类型,不知道怎么操作才算合理。
代码:
public class ArrayTest{
private int length;
private Object[] arr;

public ArrayTest(int num){
arr = new Object[num];
length = num;
}

/* 移除指定位置的数据 */
public void remove(int index){
if ((index < length) && (arr[index - 1] != null)){
arr[index - 1] = null;
length--;
}
}

/* 在指定位置添加数据 */
public void add(int index, Object obj){
if ((length < arr.length) && (arr[index - 1] == null)){
arr[index - 1] = obj;
length++;
}
}
}

我不明白的地方是:
1、对于private成员需要使用setter来改变其值,那么数组成员的处理是否也是相同的呢?
2、针对length,自增和自减运算的时候是否需要使用setter方法?
5474 次点击
所在节点    Java
10 条回复
laskuma
2013-03-05 06:19:55 +08:00
同菜鸟
实际情况下,一般不会把array暴露出去。比如当你implement stack或者heap的时候。如果需要提供内部数据结构 return一个copy吧。
另外array自带length
platoo
2013-03-05 06:58:21 +08:00
@laskuma 也就是数组操作的时候,也要使用getter 和 setter方法来访问么?
laskuma
2013-03-05 07:09:57 +08:00
@platoo 我觉得是完全不需要操作 这不是应该暴露给用户的东西
laskuma
2013-03-05 07:18:20 +08:00
@platoo 我个人觉得再加个传入index拿到index上的object的getter就行了
laskuma
2013-03-05 07:22:19 +08:00
@platoo 前面没有说清楚。。我个人觉得数组操作应该是 用户问send message 然后你再帮他做 用户不需要也不能知道你里面是如何implement的 就当成一个带有index的container。 不能直接用getter让用户直接获得数组 这样如果他改了里面的内容你会很难维护
setter也是同理
dongsheng
2013-03-05 08:32:06 +08:00
这不就是ArrayList类吗?去看看ArrayList的源码就知道该怎么设计了。
dongsheng
2013-03-05 08:32:31 +08:00
holmesabc
2013-03-05 08:52:53 +08:00
ArrayList源码,搞定
platoo
2013-03-07 09:00:32 +08:00
@dongsheng 十分感谢!都不知道还有这么好的网站!
ihuguowei
2013-03-08 10:28:47 +08:00
@dongsheng 谢谢,原来这边还有源码,再次谢谢提供这么好的资源。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/61967

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX