在实现Class时使用额外的方法实现Java接口

时间:2014-03-12 21:50:05

标签: list methods interface implements

第一篇帖子很温柔。 :)我不确定我在这里做错了什么,希望有人可以帮助我。

我有一个实现List接口的Class。这个类也有它自己的方法,如果它不在列表中,它只会将一个项添加到列表中。麻烦的是,当我尝试使用我的conditionalAdd方法时,我收到一条错误,指出它无法找到我的方法,因为它在WorkflowSubType类中查找它。请参阅以下内容:

当我实例化我正在使用的类时:

List<WorkflowSubType> currentViolations = new Violations();

这是实现List接口的类的定义:

import java.util.*;

public class Violations<E> implements List<E>{

public Violations() {}

public void conditionalAdd(E violation){
     if(violation != null)
     if(!this.contains(violation))
    add(violation);
}

@Override
public <T> T[] toArray(T[] a) {
return null;
}

@Override
public boolean add(E e) {
return false;
}

 @Override....

那我怎么不能访问conditionalAdd方法呢。我创建的currentViolations对象是List,但它也是Violations类型。我说的是对的吗?

提前致谢。
RW

1 个答案:

答案 0 :(得分:1)

您需要将实例转换为违规行为。如果您不这样做,编译器会将其解释为List,而List不具有conditionalAdd方法。这样做:((Violations<WorkflowSubType>)currentViolations).conditionalAdd(whatever);