在Java中,你可以使用構造函數,即創建Some
一個實例,但None
沒有夥伴班。你如何通過None
到Java的Scala函數?
33
A
回答
19
我覺得這醜陋位將工作:scala.None$.MODULE$
沒有必要爲一個新實例,因爲一個都不是另一個好...
10
您可以從Java中使用訪問單身無實例:
scala.None$.MODULE$
49
的scala.None$.MODULE$
事情並不總是進行類型檢查,比如這並不編譯:
scala.Option<String> x = scala.None$.MODULE$;
因爲javac的不知道Scala的聲明站點變化,讓您得到:
J.java:3: incompatible types
found : scala.None$
required: scala.Option<java.lang.String>
scala.Option<String> x = scala.None$.MODULE$ ;
這並不編譯,雖然:
scala.Option<String> x = scala.Option.apply(null);
所以這是一個不同的方式來獲得無那在更多情況下可用。
1
與此stinkfest面前,我一貫的手法是:
斯卡拉:
object SomeScalaObject {
def it = this
}
的Java:
doStuff(SomeScalaObject.it());
2
我發現這個這個通用功能是最強大的。您需要提供類型參數,但演員只出現一次,這很好。由於Java編譯器可能會通知您,所以其他一些解決方案無法在各種情況下使用。
import scala.None$;
import scala.Option;
public class ScalaLang {
public static <T> Option<T> none() {
return (Option<T>) None$.MODULE$;
}
}
public class ExampleUsage {
static {
//for example, with java.lang.Long
ScalaLang.<Long>none();
}
}
相關問題
- 1. 如何使用Java代碼
- 2. 如何使用Java代碼
- 3. 如何從Java代碼
- 4. 如何使用Java代碼運行Java代碼?
- 5. 如何從我的Java代碼使用Apache Felix?如何添加maven POM代碼?
- 6. 如何從Java代碼調用servlet
- 7. 如何從Java調用Xtend代碼?
- 8. 如何從Wicket中的JavaScript代碼調用Java代碼?
- 9. OpenMP如何在Java代碼中使用?
- 10. 如何使用wsdl2java創建Java代碼?
- 11. 如何檢查™使用Java代碼
- 12. 我如何使用Java代碼
- 13. 如何使用XML或Java代碼
- 14. 我如何使用liquibase與Java代碼
- 15. 如何在java代碼中使用parenetheses
- 16. 如何使用Java代碼登錄Facebook?
- 17. 如何從Java代碼中使用Jacob禁用VB6 MsgBox
- 18. 如何使用QAndroidJniObject從Qt內部調用Java代碼?
- 19. 從本機代碼調用Java代碼?
- 20. 使用Java代碼
- 21. 使用Java代碼
- 22. 從Java代碼
- 23. 從Java代碼
- 24. 從Java代碼
- 25. 想要使用JavaCPP從Java代碼中調用C++代碼?
- 26. 使用MonoDroid庫apk從Java代碼
- 27. 如何使用Java從html代碼中獲取圖像URL
- 28. 如何使用環境變量從Java代碼設置文件?
- 29. 如何從Java代碼中使用Scala可變參數
- 30. 如何使用mybatis直接從java代碼執行查詢?
我甚至不得不編寫「scala.Option.apply((String)null)」來使編譯器很高興。 – Eric 2012-05-17 00:59:26
謝謝!這對我有用,而scala.None $ .MODULE $產生類型錯誤。 – 2016-01-25 18:24:55