【问题标题】:Extending an interface扩展接口
【发布时间】:2015-08-09 22:35:56
【问题描述】:

我下载了一个代码,它的开头是这样的:

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

SA 应该是某种typeActioninterface

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

谢谢:)

【问题讨论】:

  • 它应该是一个直接或间接实现该接口的类,或者扩展它的接口。
  • 你不必定义S、A类
  • @ThusithaThilinaDayaratne 确实不鼓励使用原始类型,但

标签: java interface extends


【解决方案1】:

“A”类型将是一个实现扩展 Action 的接口的类。

【讨论】:

    【解决方案2】:

    为你的代码

    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&lt;S,A&gt;。@ 987654332@ 和 A 可能属于同一类型,也可能不同。”

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

    接口声明中可能包含这些类型。然后可以将它们留在实例上。

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

    您可能会从阅读official documentation 中受益。

    【讨论】:

      【解决方案3】:

      关于 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 2023-04-08
        • 1970-01-01
        • 2018-11-28
        • 2020-09-07
        • 1970-01-01
        • 2020-11-15
        相关资源
        最近更新 更多