只显示主题贴

不错。有学习了点core java的知识
sinosoft15 写道可以写个List1继承ArrayList,重写add方法。 class List1<E> extends ArrayList { public boolean add(Object o) { if(super.size()<1)//大小为1 { super.add(o); } else { System.out.println("不允许再加入了"); } return true; } } class TestList { priv ...
  • 进入论坛 Java
哦。第一个问题我知道了。不能用list来声明变量。必须用ArrayList来声明一个变量。引用变量的类型决定了那些方法可以调用。因为引用变量的类型是list,就像litchi所说,是一个接口。所以没有clone方法。这回彻底明白了。
  • 进入论坛 Java
litchi 写道zzysh 写道litchi,你提供的代码不能通过编译。似乎list不能直接调用clone方法吧。另外,就算得到一个clone的对象后,这个clone的对象就是只读的吗? 问题1. list.clone报错,因为list是个接口,继承于collection接口,并不继承于Object类,其具体实现(比如ArrayList等),才继承于Object,而clone方法是在Object中定义的 刚才我写的时候没有注意到这个问题,你可以这么写,有点别扭 Arrays.asList((Object[])al.toArray().clone()); 问题2 这个clone的对象和你原 ...
  • 进入论坛 Java
litchi,你提供的代码不能通过编译。似乎list不能直接调用clone方法吧。另外,就算得到一个clone的对象后,这个clone的对象就是只读的吗?
  • 进入论坛 Java
hunk,你的思路是可以。不过代码那样写不能通过编译。需要改一下。不过这个思路是可行的。如果客户端试图使用add方法更改这个Collection里面的值,会抛出UnsupportedOperationException异常 对于List应该使用unmodifiableList方法来返回只读的List视图。
  • 进入论坛 Java
谢谢各位的回复。hunk,能否举一个使用java.util.Collections.unmodifiableCollection()的例子,以前没有用过这个方法。谢谢。mvmouse,我不太明白你的意思,或者你没有理解我的意思。我是需要引用者得到我这个list的。但是他只能使用里面现有的值,而不可以改变其中的值。liquidthinker,自己封装一个list好像太麻烦了吧。
  • 进入论坛 Java
就是说如何定义这个list,确保引用它的人,只能使用我初始化时定义好的内容,不能改变其中的内容。
  • 进入论坛 Java
例如,我有下面这个类: import java.util.ArrayList; import java.util.List; class TestList { private List<String> list = new ArrayList<String>(); public TestList() { list.add("String"); } public List getList(){ return list; } } 怎样确保引用我这个类的类调用getList方法后,不能更改得到的list里面的值。比如不能通过 ...
  • 进入论坛 Java
gem我都是直接用源码安装的,应该这个方法肯定可以的。你可以试一下。
  • 进入论坛 Ruby