2015-09-08 64 views
1

我有一個類:爲什麼Netbeans找不到接口實例的方法?

public class JWHTMLPage implements JWDisplayable { 
    ... 
} 

一個接口:

public interface JWDisplayable { 

    public void addCSS(String link); 
    public void addJS(String link); 
    public void setViewport(String content); 
    public void appendToBody(String html); 
    public void updateHTML(); 

} 

而另一個類:

public class JWHTMLPageMap<String, JWHTMLPage> implements Map<String, JWHTMLPage>, JWDisplayable { 
    ... 
} 

裏面JWHTMLPageMap,我重寫addCSS方法。問題是,NetBeans的的自動完成沒有找到JWHTMLPage的方法:

enter image description here

它把頁面只是一個對象,但它是一個JWHTMLPage,它實現了在JWDisplayable所有這些方法。我究竟做錯了什麼??這個不成立。

+0

這可能是遇到了錯誤的文件的頂部編譯的結果。這可能是由於'Map'不是一個接口,所以你不'執行'它,你應該'擴展'它。 – Obicere

回答

1

你的問題肯定來源於此行:

public class JWHTMLPageMap<String, JWHTMLPage> implements Map<String, JWHTMLPage>, JWDisplayable { 

您可能沒有與它的編譯錯誤,但它爲你使用現有的類,好像他們是正規generecity參數與真實類是不正確的然後將通過通用參數

隱藏於是改用:

public class JWHTMLPageMap<S extends String, J extends JWHTMLPage> implements Map<S, J>, JWDisplayable { 

可能產生說像一個警告: 類型參數S不應受最終類型String限制。最終類型不能被進一步延長(因爲String是一個final類型)

因此你爲什麼不乾脆寫:

public class JWHTMLPageMap<J extends JWHTMLPage> implements Map<String, J> , JWDisplayable { 
相關問題