Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行时检查:一个接口有多少个实现的类(Java)_Java_Class_Runtime_Interface Implementation - Fatal编程技术网

运行时检查:一个接口有多少个实现的类(Java)

运行时检查:一个接口有多少个实现的类(Java),java,class,runtime,interface-implementation,Java,Class,Runtime,Interface Implementation,我尝试了一个用于股票技术分析的Java库(ta4j)。它提供以下功能: 创建规则: Rule entryRule=new CrossedUpIndicatorRule(shortSma,longSma) .或(新的交叉向下指示器(收盘价,十进制数值为(“800”))) 制定战略: Strategy myStrategy=新策略(入口规则、出口) 规则派生自:公共接口规则 策略有:公共类策略扩展对象 可以找到详细的Javadocs 任务:在我的应用程序中,我想提供可用策略的选择,并提供为规则输

我尝试了一个用于股票技术分析的Java库(ta4j)。它提供以下功能:

  • 创建规则:
    Rule entryRule=new CrossedUpIndicatorRule(shortSma,longSma)
    .或(新的交叉向下指示器(收盘价,十进制数值为(“800”)))
  • 制定战略:
    Strategy myStrategy=新策略(入口规则、出口)
  • 规则派生自:
    公共接口规则
  • 策略有:
    公共类策略扩展对象
可以找到详细的Javadocs

任务:在我的应用程序中,我想提供可用策略的选择,并提供为规则输入变量的可能性,例如Decimal.valueOf(“400”)

问题:如果我想在运行时自动检测可用策略,如何实现这一点

解决方案的模糊想法:将策略类更改为接口类,并在运行时使用java反射(?)检测实现的策略

我的Java技能:我对Java有很好的基本了解,但我不是专家或专业人士


你能给我一些提示如何解决这项任务吗?

通过反射,你可以按名称查看类,但你不知道类的名称,因此无法找到它们。在底层,您需要一个知道类名的类装入器来完成这项工作。或者仅仅是一个类路径扫描库,它为您完成了所有这些:这是谷歌给我的第一个结果之一,不知道它是否有任何好处;通过这种方式,您根本不必使用反射。Ta4j不是为RT优化而设计的。要跟踪策略的执行,请查看关于日志记录。没有简单的方法可以检查策略中使用的每个指标的每个参数。更多的日志会降低性能并导致可读性问题(例如,SMA(12)和SMA(14)之间的区别是什么?(因为您可能有多个具有不同参数的相同指示符类型的实例)。通过反射,您可以按名称查看类,但是您不知道类的名称,因此无法找到它们。在底层,您需要一个知道类名的类装入器来完成这项工作。或者仅仅是一个类路径扫描库,它为您完成了所有这些:这是谷歌给我的第一个结果之一,不知道它是否有任何好处;通过这种方式,您根本不必使用反射。Ta4j不是为RT优化而设计的。要跟踪策略的执行,请查看关于日志记录。没有简单的方法可以检查策略中使用的每个指标的每个参数。更多的日志会降低性能并导致可读性问题(例如,SMA(12)和SMA(14)之间的区别是什么?(因为可能有多个具有不同参数的相同指示器类型的实例))。