2012-11-19 63 views
5

我有以下問題: 我們有一個共享的scala-java-project(只有編寫java代碼的成員),因此我們使用java枚舉來達到一個目的。 但現在我想在斯卡拉此枚舉上進行模式匹配,並與@switch優化它,因爲Java交換機實際上可以使用枚舉。使用@switch優化Java枚舉的Scala模式匹配

但是編譯器只抱怨:

error: could not emit switch for @switch annotated match 
(args.tileType: @switch) match { 

其中tiletype是包含枚舉值的一個領域。 如何解決代碼可以優化?

回答

2

您使用Java。

斯卡拉只包含大約所需的最低能看懂的Java枚舉。您目前無法在Scala中創建或優化使用它們(通過2.10)。

+0

好,如果這是事實,我會使用Java,如果表現確實變得至關重要 – DerWaldschrat

+0

您可以從枚舉的哈希映射功能,做交換機的方式,如果列表變得冗長得可笑。 (假設你可以安排它,所以你不必每次都建立地圖。) –