2012-02-29 298 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