来自Scala的Java工厂方法调用
在我正在进行的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)
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在这里的回答应该就是答案。