2014-03-12 117 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);