我遇到了真正基本的OO理解问题,非常感谢任何帮助。
我试图添加" Thing"每次按下一个按钮,我都会围绕一个arraylist,我无法围绕如何创建添加到列表的唯一实例。按下不同的按钮应该从列表中删除最近的对象。
ArrayList myList = new ArrayList<Thing>();
if(input.isKeyPressed(Input.KEY_A)){
Thing myThing = new Thing();
myThing.setNumber(myList.size());
myList.add(myThing);
}
if(input.isKeyPressed(Input.KEY_R)){
if(myList.size()>0){
myList.remove(myList.size()-1);
}
}
如果我打算制作很多东西&#34;而且我不关心他们被称为什么(我也不想跟踪独特的事物对象名称)。我怎样才能创造一个独特的东西&#39;按下每个按钮上的物体,疼痛极小。
更新: 感谢您的评论,请让我试着更好地表达我的问题...... 当我创建一个完整的&#39; Thing&#39;,其每个实例被称为&#34; myThing&#34;时,每个实例都具有相同的实例变量值。
如果我希望某些“事情”有boolean isVisable = true
,而其他人要boolean isVisable = false
。我被卡住了,因为列表中的每个元素都具有相同的名称。
答案 0 :(得分:2)
确保Thing正确实现equals和hashCode,然后将实例存储在Set集合(即HashSet)中。通过hashCode()和equals()的实现,完全取决于你的两个Thing实例是相同的,因此你将能够以任何你需要的方式强制执行唯一性。
现在的诀窍是实现hashCode()和equals()并不是完全无关紧要的,但是如果你打算使用Java,你需要知道如何去做。请阅读有效JAva的appropriate chapter(或者更好地阅读整本书)。
答案 1 :(得分:0)
试试这个:
$ cat Thing.java
import java.util.*;
public class Thing{
UUID id;
Thing () {
id = UUID.randomUUID();
}
public String toString(){
return id.toString();
}
public static void main(String[] argv) {
Thing t = new Thing();
System.out.println(t);
}
}
$ javac Thing.java && java Thing
08bb3702-84d3-4bc3-b8ab-bb52b90b8f78