2011-11-15 81 views
1

EventHandler.java:X是不適用的參數Y,當X Y延伸

public abstract class EventHandler<E> { 
    public abstract void HandleEvent(Object sender, E e); 
} 

Foo.java:

private OnProgressEventHandler m_OnProgressEventHandler = new OnProgressEventHandler(); 
private class OnProgressEventHandler extends EventHandler<ProgressEventArgs> { 
    public void HandleEvent(Object sender, ProgressEventArgs args) { 
     /*...*/ 
    } 
} 

ProgressEventArgs.java:

public class ProgressEventArgs extends EventArgs { 
    /*...*/ 
} 

Bar.java:

public void addProgressEventListener(EventHandler<EventArgs> listener) { 
    m_OnProgress.addListener(listener); 
} 

這條線:

myBarObject.addProgressEventListener(m_OnProgressEventHandler); 

原因:

在 類型欄的方法addProgressEventListener(事件處理程序)是不適用的參數( Foo.OnProgressEventHandler)

我不明白它爲什麼不編譯,因爲OnProgressEventHandler延伸了EventHandler<ProgressEventArgs>。我敢肯定,這是微不足道的東西,但我不知道爲什麼。

+0

哪裏m_OnProgress創建,是什麼類型呢? – Jagger

回答

2

變化

public void addProgressEventListener(EventHandler<EventArgs> listener) { 
    m_OnProgress.addListener(listener); 
} 

public void addProgressEventListener(EventHandler<? extends EventArgs> listener) { 
    m_OnProgress.addListener(listener); 
} 
+0

感謝這個作品,現在我有一些與此有關的其他問題:http://stackoverflow.com/questions/8136782/java-generics-method-x-is-not-applicable-for-the-arguments – Caner

相關問題