2012-02-29 274 views
0

我想下面的Java代码转换为斯卡拉:Java来斯卡拉转换

ImageRecognitionPlugin imageRecognition = (ImageRecognitionPlugin)nnet.getPlugin(ImageRecognitionPlugin.class) 

它在运行的Java(全码:http://neuroph.sourceforge.net/image_recognition.html)。

斯卡拉会是什么?我对“(ImageRecognitionPlugin).nnet”位感到困惑,当我放下“(ImageRecognitionPlugin)”时,出现以下错误。

“错误:对象ImageRecognitionPlugin不是值”

+0

什么是您正在使用的Scala代码? – 2012-02-29 17:58:14

+0

http://www.javatoscala.com/ – 2014-05-21 11:42:50

回答

4

在Scala中,你需要指定你是否创建一个可变(VAR)或不变(VAL)变量。你还需要使用classOf和}这种替代的.class和(投):

val imageRecognition = nnet.getPlugin(classOf[ImageRecognitionPlugin]).asInstanceOf[ImageRecognitionPlugin] 
1

试试这个:

val imageRecognition:ImageRecognitionPlugin = 
    nnet.getPlugin(classOf[ImageRecognitionPlugin]) 

让我们打破这:

val 

此声明的不可变值。这意味着这个值将始终指向这个特定的实例。如果你使用了一个var,那么这将是一个变量。

imageRecognition:ImageRecognitionPlugin 

这告诉我们1)值的名称和2)它的类型。与Java中的Foo aFoo相比,Scala使用aFoo:Foo。

nnet.getPlugin(classOf[ImageRecognitionPlugin]) 

classOf [Foo]是Scala在Java中等价于Foo.class的。

+1

如果在Java中真正需要强制转换(例如'getPlugin'返回'Object'),则此代码将不起作用。然后你需要Chris Shain所示的'asInstanceOf'。 – Landei 2012-02-29 12:32:46

+0

谢谢瑞恩 - asInstanceOf也是必需的 – candleford 2012-02-29 22:38:20