扩展接口

Extending an interface

我下载了一个代码,其函数开头如下:

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

SA 应该是某种 typeAction 是一个 interface

在我的代码中,我想使用给定的 class MDP。因此,我不得不定义 SA;我定义 S 是某个 class,但我不知道如何定义 A... 它不是 class 也不是界面。它应该是什么?

谢谢:)

"A" 类型将是 class 实现扩展 Action 的接口。

为您的代码

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

SA 是类型。它们可以引用接口或 Class。字母名称是任意的。它们可以是任何字母。这同样有效

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

它说的是,"class MDP is a parameterized class, having the parameters S and A where A is some subclass of Action, and it implements the interface MarkovDecisionProcess<S,A>. S and A may or may not be of the same type."

当你给class类型参数时,你可以缩小类型的特殊性。在这种情况下,S 保持不变(在特异性方面)但您将第二个参数缩小到 Action 的某个实例。

可以在接口声明中包含这些类型。然后他们可以离开实例。

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

public class MDP implements MarkovDecisionProcess{}

您可能会从阅读一些 official documentation.

中获益

关于 MDP 文档 "Action" 是一个接口:

public interface Action
Describes an Action that can or has been taken by an Agent via one of its Actuators.

查看文档:http://aima-java.github.io/aima-java/aima3e/javadoc/aima-core/aima/core/probability/mdp/impl/MDP.html