已为我提供了以下主要方法,并且必须编写ObjectList类的代码。我应该推断出ObjectList类的必要功能并亲自编写该类,但是我不确定要实现此功能需要做什么。任何帮助理解这一点将不胜感激。这是我得到的代码:
ObjectList ol = new ObjectList(3);
String s = "Im Happy";
Dog d = new Dog();
DVD v = new DVD();
Integer i = 1234;
System.out.println(ol.add(s));
System.out.println(ol.add(d));
System.out.println(ol.add(v));
System.out.println(ol.add(i));
ol.remove(0);
System.out.println(ol.add(i));
System.out.println("Is the list full? "+ isFull());
System.out.println("Is the list empty? "+ isEmpty());
System.out.println("Total number of objects in the list: " + getTotal());
Object g = ol.getObject(1);
g.bark();
答案 0 :(得分:0)
这很简单,只需要在Object
类中使用ArrayList
或LinkedList
创建ObjectList
类型的列表,并实现以下功能
public class ObjectList{
private ArrayList<Object> objects;
public ObjectList(int size)
{
objects = new ArrayList<Object>(size);
}
public String add (Object object)
{
objects.add(object);
//anything you would like to return I'm just returning a string
return "Object Added";
}
public void remove (int index)
{
objects.remove(index);
}
public boolean isEmpty()
{
return objects.isEmpty();
}
public int getTotal()
{
return objects.size();
}
public Object getObject(int index)
{
return objects.get(index);
}
}
由于isFull()
的大小可以动态更改,因此不需要ArrayList
。您可以使用简单的数组代替ArrayList
,然后实现isFull()
函数。
另外,当使用get getObject()
函数获取对象时,需要在使用there函数之前将其强制转换为正确的类型。在您的代码中g.bark()
不起作用,因为Object
没有树皮功能
Object g = ol.getObject(1);
//This can give a runtime error if g is not a Dog
//Use try catch when casting
Dog d = (Dog)g;
d.bark();
编辑
如果使用数组而不是isFull()
,这是实现ArrayList
和其他功能的方式,但是为了简单起见,请使用ArrayList
版本
public class ObjectList{
private Object[] objects;
private int size = 0;
private int currentIndex = 0;
public ObjectList(int size)
{
this.size = size;
objects = new Object[size];
}
private boolean isFull() {
if(currentIndex == size)
return true;
else
return false;
}
public String add (java.lang.Object object)
{
if ( ! isFull() ) {
objects[currentIndex] = object;
currentIndex++;
return "Object added";
}
return "List full : object not added";
}
public void remove (int index)
{
if( !isEmpty() ) {
//shifting all the object to the left of deleted object 1 index to the left to fill the empty space
for (int i = index; i < size - 1; i++) {
objects[i] = objects[i + 1];
}
currentIndex--;
}
}
public boolean isEmpty()
{
if(currentIndex == 0)
return true;
else
return false;
}
public int getTotal()
{
return currentIndex;
}
public java.lang.Object getObject(int index)
{
if(index < currentIndex)
return objects[index];
else
return null;
}
}
答案 1 :(得分:0)
您似乎想要实现的是“扩展” ArrayList 的功能并创建对象的自定义列表。您可以做的是创建一个扩展ArrayList的类,并定义/覆盖您想要的任何其他方法。
public class ObjectList extends ArrayList<Object> {
//constructor with initial capacity
private int length;
public ObjectList(int size){
super(size);
this.length= size;
}
public Object getObject(int index){
return this.get(index);
}
}
现在,您具有从ArrayList类和 getObject 方法继承的 add 和删除函数。
关于 isFull 方法,您可以检查ObjectList类的大小是否等于
实例化的大小。if(this.size() == this.length){
return true
}
return false;
和 getTotal
public int getTotal(){
return this.size();
}