Java编程: 成员为数组类型,怎样对其操作才算合理? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
platoo
V2EX    Java

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

  •  
  •   platoo 2013-03-05 05:54:08 +08:00 6022 次点击
    这是一个创建于 4606 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚刚接触Java没多久,在实现一个类的时候,有一个成员(field)是数组类型,不知道怎么操作才算合理。
    代码:
    public class ArrayTest{
    private int length;
    private Object[] arr;

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

    /* 移除指定位置的数据 */
    public void remove(it 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方法?
    10 条回复    1970-01-01 08:00:00 +08:00
    laskuma
        1
    laskuma  
       2013-03-05 06:19:55 +08:00 via iPhone
    同菜鸟
    实际情况下,一般不会把array暴露出去。比如当你implement stack或者heap的时候。如果需要提供内部数据结构 return一个copy吧。
    另外array自带length
    platoo
        2
    platoo  
    OP
       2013-03-05 06:58:21 +08:00
    @laskuma 也就是数组操作的时候,也要使用getter 和 setter方法来访问么?
    laskuma
        3
    laskuma  
       2013-03-05 07:09:57 +08:00 via iPhone
    @platoo 我觉得是完全不需要操作 这不是应该暴露给用户的东西
    laskuma
        4
    laskuma  
       2013-03-05 07:18:20 +08:00 via iPhone
    @platoo 我个人觉得再加个传入index拿到index上的object的getter就行了
    laskuma
        5
    laskuma  
       2013-03-05 07:22:19 +08:00 via iPhone
    @platoo 前面没有说清楚。。我个人觉得数组操作应该是 用户问send message 然后你再帮他做 用户不需要也不能知道你里面是如何implement的 就当成一个带有index的container。 不能直接用getter让用户直接获得数组 这样如果他改了里面的内容你会很难维护
    setter也是同理
    dongsheng
        6
    dongsheng  
       2013-03-05 08:32:06 +08:00
    这不就是ArrayList类吗?去看看ArrayList的源码就知道该怎么设计了。
    holmesabc
        8
    holmesabc  
       2013-03-05 08:52:53 +08:00   1
    ArrayList源码,搞定
    platoo
        9
    platoo  
    OP
       2013-03-07 09:00:32 +08:00
    @dongsheng 十分感谢!都不知道还有这么好的网站!
    ihuguowei
        10
    ihuguowei  
       2013-03-08 10:28:47 +08:00
    @dongsheng 谢谢,原来这边还有源码,再次谢谢提供这么好的资源。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6138 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 42ms UTC 02:25 PVG 10:25 LAX 19:25 JFK 22:25
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86