2016-03-05 37 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