2015-05-27 187 views
3

我下載的是有一個用於啓動這樣的功能代碼:擴展接口

public class MDP<S, A extends Action> implements MarkovDecisionProcess<S, A> { 
//some code...blah blah blah... 
} 

SA應該是某種typeActioninterface

在我的代碼中,我想使用給定的類MDP。因此,我必須定義SA;我將S定義爲某個類,但我不知道如何定義A ......它不是一個類,它不是一個接口。它應該是什麼?

謝謝:)

+0

這應該是直接或間接地實現該接口的類,或擴展它的接口。 – RealSkeptic

+0

你不必定義S,A類 –

+0

@ThatithaThilinaDayaratne使用原始類型是真的氣餒,雖然 – Joffrey

回答

3

「A」型是實現延伸動作的接口的類。

1

爲您的代碼

public class MDP<S, A extends Action> implements MarkovDecisionProcess<S, A> { 
    //some code...blah blah blah... 
} 

SA的類型。他們可以引用一個接口或一個類。字母名稱是任意的。他們可以是任何字母。這僅僅是爲有效

public class MDP<Q, Z extends Action> implements MarkovDecisionProcess<Q, Z> { 
    //some code...blah blah blah... 
} 

所有它說的是,「類MDP是一個參數化類,具有參數SA其中AAction一些子類,它實現了接口MarkovDecisionProcess<S,A>SA可能或者可能不是同一類型。「

當您向該類提供類型參數時,可以縮小該類型的特性。在這種情況下,S保持不變(就特異性而言),但您將第二個參數縮小到Action的某個實例。

在接口聲明中可能有這些類型。然後他們可以在實例中停止。

public interface MarkovDecisionProcess<S,V extends Action>{} 

public class MDP implements MarkovDecisionProcess{} 

閱讀official documentation可能會對您有所幫助。