2013-05-31 79 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 '。 –