2016-03-05 55 views
0

我對下面描述的擴展泛型類的場景感到困惑。我擴展的類是下面:擴展一個泛類的原始類型警告

public abstract class PresenterWidget<V extends View> extends HandlerContainerImpl 
... 

起初,我有這個工作使用下面的子類(警告免費):

public abstract class SideBarPresenter<V extends SideBarPresenter.MyView> extends PresenterWidget<SideBarPresenter.MyView> { 

    interface MyView extends View { 
     void doSomething(); 
    } 
... 

但我想MyView轉換爲一個抽象類,所以我可以實施一種方法。我認爲這是有道理的方式如下。

public abstract class SideBarPresenter<V extends SideBarPresenter.MyView> extends PresenterWidget<SideBarPresenter.MyView> { 

    abstract class MyView implements View { 
     void doSomething() {} 
    } 
... 

問題是這樣產生2個警告,都指出:

SideBarPresenter.MyView是原始類型。引用泛型類型 應SideBarPresenter.MyView進行參數

我應該忽略此警告或是否有更好的方式來做到這一點?

+1

從來沒有**,**,忽略任何警告。他們在那裏有一個很好的理由。對於原始類型,請參閱此問題:http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use-it – Tunaki

+0

@ 4castle查看是一個接口 –

+0

@Tunaki感謝您的回覆,我實際上已經使用了很多原始類型,但是我正在爲這個特定的場景而苦苦掙扎。我同意,但從不忽視警告,這就是爲什麼我張貼這個問題:) –

回答

4

您應該讓MyView成爲static類。否則,它實際上是一個SideBarPresenter實例的內部類,這可能是您的泛型警告進入的地方。默認情況下,內部接口爲static