2011-11-04 36 views
1

我需要使用接口java.util.Collection实现一个包数据结构。 我并没有要求数据结构的实际实施方面的帮助。我无法让我的程序编译。我只想在我开始真正实现方法之前,先实现接口的空白实现(包含方法的非函数签名)以进行编译。第一次实现java接口,无法获得成功的编译

class Bag<T> implements java.util.Collection<T> 
    { 

    public void Collection() { 

    } 

    public boolean add(E e) { 

    } 

    public boolean addAll (Collection<? extends E> c) { 

    } 

    public void clear() { 

    } 

    public boolean contains(Object o) { 

    } 

    public boolean containsAll(Collection<?> c) { 

    } 

    public boolean equals(Object o) { 

    } 

    public int hashCode() { 

    } 

    public boolean isEmpty() { 

    } 

    public Interator<E> interator() { 

    } 

    public boolean remove(Object o) { 

    } 

    public boolean removeAll(Collection<?> c) { 

    } 

    public int size() { 

    } 

    public Object[] toArray() { 

    } 

    public <T> T[] toArray(T[] a) { 

    } 
} 

编译器在add等方法的参数中找不到E类。我应该为E定义一个类,还是有什么我不了解E实际是什么?编译器说它找不到类集合(在像addAll这样的方法的参数中)我是否导入java.util.Collection还是有其他我应该知道的东西?编译器也不知道class Iterator,也不知道我

我知道这可能都是基本的,但我昨天无法通过Google等找到任何东西,我的教授的讲座根本没有遵循这些项目。我迷失在这一个。谢谢你的帮助!

编辑:此外,我还没有在这方面进行过多搜索,但如果有人能告诉我任何有用的“?”s如public boolean addAll (Collection<? extends E> c) {},那将不胜感激。

回答

2

使用TE作为类型参数,然后在整个类定义中一致地使用它。

Java文档使用E,所以你可以改变。例如第一行:

class Bag<E> implements java.util.Collection<E> 

您还需要要么返回值或抛出一个异常,对于那些不返回void的方法。

public int size() { 
    throw UnsupportedOperationException(); 
} 
0

E应该是T,这是您要存储的通用类型。你的构造函数应该是你的类而不是接口。此外,您还需要在您的方法中至少添加带有返回值的存根返回值,例如如果返回值是布尔值,则返回“false”。

希望这会有所帮助。

+0

这些可能有助于填补在你的教授叶关:http://download.oracle.com/javase/tutorial/java/ – cjstehno

+0

谢谢你,是的,我忘了说,但我知道我会需要任何返回值的方法的返回语句。 – Alex

0

尝试改变import语句import java.util.*;

0

因为你没有E宣布,使用T代替,你也需要返回无论它被声明为返回。

0

你的通用参数叫做T,你在方法的实现中使用了E。如果您以T作为元素类型,请更新方法签名。

在non-void方法中,如果没有至少虚拟实现(如return null;return false;),它可能仍然不会编译。

java.util.Iterator是一个interface,它描述了一组方法,允许您遍历集合中的元素。您将返回实现该接口及其方法的类的实例。YourListIterator可能会保留一个引用或索引到您在列表中的位置,返回相应的元素并向前移动整个列表。

在此tutorial中讨论了仿制药(包括使用?)。

0

在JAVA中实现接口之前,你必须做大量的基础学习。可在任何的方法来阅读“在Java编程思想”或类似 在你的程序有多个问题

  1. Collection类的进口缺失
  2. 没有return语句是有
  3. 更换Ë以T
+0

你是什么意思“列表项”?我知道我将需要返回语句,它们看起来是主要问题,因为我正在将Java API的符号与我教授的T和E项目规范中的符号混合起来,但却不知道它们是什么。谢谢。 – Alex

+0

对不起,这是一个自动的“标签”,当我们创建一个列表时,stackoverflow会插入 – Sap