在实现类中添加额外方法的情况下实现Java接口

4

第一次发布,请多关照 :)。我不确定我在这里做错了什么,希望有人能帮助我解决。

我有一个实现List接口的类。这个类还有它自己的方法,只有在列表中没有该项目时才会将其添加到列表中。问题是,当我尝试使用我的conditionalAdd方法时,我会得到一个错误,指出它找不到我的方法,因为它正在WorkflowSubType类中寻找它。请见下文:

当我实例化该类时,我使用以下内容:

List<WorkflowSubType> currentViolations = new Violations();

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

public class MyClass implements 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


2
你需要将实例转换为Violations。如果不这样做,编译器会将其解释为List,而List没有conditionalAdd方法。像这样做:((Violations<WorkflowSubType>)currentViolations).conditionalAdd(whatever); - Viccari
我会添加一个答案,这样其他人也可以受益。如果您认为它有帮助,请接受/点赞它。 - Viccari
目前还不能投票...等我再获得一些积分后就会回来投票。但是我已经接受了答案。再次感谢。 - RalphW
1个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接