2014-03-12 119 views
4

第一篇文章很温柔​​。 :)我不知道我在这里做错了什么,希望有人能帮助我。用额外的方法实现Java接口实现类

我有一个实现List接口的类。这个类也有它自己的方法,如果它不在列表中,它只会将一个项目添加到列表中。问题是,当我尝试使用我的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.... 

那么怎么来的,我可以” t访问conditionalAdd方法。我创建的currentViolations对象是一个List,但它也是一个Violations类型。我说得对吗?

在此先感谢。
RW

+2

您将需要将您的实例转换为Violations。如果你不这样做,编译器将其解释为List,而List没有'conditionalAdd'方法。像这样做:'((Violations )currentViolations).conditionalAdd(whatever);' – Viccari

+0

完美。谢谢 – RalphW

+0

我会添加一个答案。所以其他人可能会从中受益。如果您认为它有帮助,请接受/ upvote它。 – Viccari

回答

1

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