扩展接口

3
我下载了一段代码,其中有一个函数以如下方式开始:
public class MDP<S, A extends Action> implements MarkovDecisionProcess<S, A> {
//some code...blah blah blah...
}

SA应该是某种类型。 Action是一个接口。

在我的代码中,我想使用给定的MDP类。因此,我必须定义SA;我将S定义为某个类,但我不知道如何定义A...它既不是类也不是接口。它应该是什么?

谢谢 :)


这应该是一个直接或间接实现该接口的类,或者是扩展它的接口。 - RealSkeptic
你不需要定义S和A类 - Thusitha Thilina Dayaratne
@ThusithaThilinaDayaratne 使用原始类型是不被鼓励的,尽管如此。 - Joffrey
3个回答

3
"A"类型是指实现了扩展Action接口的类。

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{}

你可能会从阅读一些官方文档中受益。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接