一个界面类A,用户输入信息;
将输入的信息存储在一单态类B的一变量list中;
类 C D E 都要得到该list进行相应的操作;问:我该怎么写才能保证C、D、E得到的都是B中的初始的list我有点晕了,所以来问问,找baidu也不会找,找的都是没用的东西

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【degree41】截止到2008-06-27 00:48:52的历史汇总数据(不包括此帖):
    发帖数:2                  发帖分:10                 
    结贴数:2                  结贴分:10                 
    未结数:0                  未结分:0                  
    结贴率:100.00%            结分率:100.00%            
    敬礼!
      

  2.   

    将类B实现Serializable接口,然后重写clone方法;然后测试输出可以看到
    B b1 = B.getInstance();
    B b2 = (B)b1.clone();
    输出:
    b1.toString()和b2.toString()不同;但是为什么输出b1.getList().toString()和b2.getList().toString()相同呢?
    也就是说需要的没有深clone,刚看这个,有点懵,有谁给解释下啊
      

  3.   

    在B类要有getList()方法,return list,然后C,D,E类都extends B,调用getList()方法来得到list
      

  4.   

    B类有getList()方法,C,D,E类都持有B类对象的引用也行
      

  5.   

    6楼可说的是这样:
    A.java-------------public class A {
    static int i=2;
    public A(){
    }
    public static int getI() {
    return i;
    }
    public static void setI(int i) {
    A.i = i;
    }
    }C.java----------public class C extends A {

    }B.java-----------------public class B extends A { public static void main(String[] args) {
    System.out.println(getI());
    C c = new C();
    c.setI(10);
    System.out.println(getI());
    }}
    输出如下:
    2
    10看B的main方法,在C没操纵A中的属性i时B继承而来的值是2,C操纵之后B继承而来的值是10;
    我现在要的就是怎么在C操纵之后B得到的还是2。
    也许6楼说的意思我没明白,能不能再讨论下,昨天停电了,不好意思没上网。
      

  6.   

    上篇帖子回的是5楼...不好意思,呵呵...6楼的意思?
    我现在就是要避免CDE类持有B类中list引用的情况,我想让CDE类在进行算法之前,得到的都是B中的list的初始内容。也就是说,在进行算法前,CDE类持有的都是B类对象copy而非引用。
      

  7.   

    class B {
         private List list;     B(List l) {
             this.list = Collections.unmodifiableList(list);
         }     public List getList() {
             return list;
         }