Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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
来自Scala的Java工厂方法调用_Java_Scala_Design Patterns_Factory Pattern - Fatal编程技术网

来自Scala的Java工厂方法调用

来自Scala的Java工厂方法调用,java,scala,design-patterns,factory-pattern,Java,Scala,Design Patterns,Factory Pattern,在我正在进行的Scala项目中,我使用了一个库,该库提供了一个工厂方法来实例化加密货币交换接口的实例。在java中是这样的: Exchange bitstamp = ExchangeFactory.INSTANCE.createExchange(BitstampExchange.class.getName()); val exchange = ExchangeFactory.INSTANCE.createExchange(classOf[BitstampExchange].toString)

在我正在进行的Scala项目中,我使用了一个库,该库提供了一个工厂方法来实例化加密货币交换接口的实例。在java中是这样的:

Exchange bitstamp = ExchangeFactory.INSTANCE.createExchange(BitstampExchange.class.getName());
 val exchange = ExchangeFactory.INSTANCE.createExchange(classOf[BitstampExchange].toString);
在scala中,我试着这样称呼它:

Exchange bitstamp = ExchangeFactory.INSTANCE.createExchange(BitstampExchange.class.getName());
 val exchange = ExchangeFactory.INSTANCE.createExchange(classOf[BitstampExchange].toString);
但我有一个例外,它不起作用

[ExchangeException: Problem creating Exchange (class not found)]
现在,我真的不知道最好的处理方法。我应该用scala编写自己的工厂方法吗?或者是否有一些变通办法使其发挥作用


提前感谢。

您是否尝试过
val-exchange:exchange
?为什么在Scala版本中使用
toString
Class.toString
Class.getName
有不同的输出。例如,
classOf[Integer].toString
等于
class java.lang.Integer
,但
classOf[Integer].getName
等于
java.lang.Integer
(注意没有“class”字)。对于其他类型(例如嵌套类),它将更加不同。我怀疑这就是您错误的原因。感谢Vladimir Matveev,使用.getName为我解决了问题。Vladimir在这里的回答应该就是答案。