2013-05-31 45 views
0

我有一个接口,其方法可以方便地返回调用该方法的实例。例如,二传手可能会返回“this”。Java泛型:使用接口应用到的类的类型?

interface OriginWise<T> { 
     T setOrigin(Origin origin); 
} 

是否有某种方式从它应用于类自动获取T的实例,没有传递给它,如下图所示?

class MyBean implements OriginWise<MyBean> { 
    MyBean setOrigin(Origin o){ ...; return this; } 
} 

而且,什么是在接口与默认实现的进展(只使用其他接口的方法方法;不一样的抽象类)?

+1

你是什么意思“通过如下所示”? setter的值被传递给一个方法。 returnn对象是“this”。我不好意思。 – NimChimpsky

+0

我不太了解你的问题的第二部分(“另外,有什么进展...”),请重新制定它。 – thSoft

+1

可能重复的[有没有办法引用当前类型与类型变量?](http://stackoverflow.com/questions/7354740/is-there-a-way-to-refer-to-the- current-type-a-type-variable) –

回答

0

这是你能做的最好的。如果你想返回这个(实现OriginWise),不要忘记让T扩展OriginWise。另请参阅this answerhttp://passion.forco.de/content/emulating-self-types-using-java-generics-simplify-fluent-api-implementation

+0

+1为了说明'T extends OriginWise'的优点。 –

+0

它不是一个好点;界面由Mybean实施。没有什么东西应该延伸出原始。 – NimChimpsky

+0

@NimChimpsky他们暗示'T'应该是一个“自我类型”,例如, 'T延伸OriginWise '。 –