对Java枚举使用类型别名

oxb*_*kes 4 enums scala

我想实现类似的Scala是如何定义的东西Map作为两个预定义typeobject.在Predef:

type Map[A, +B] = collection.immutable.Map[A, B]
val Map = collection.immutable.Map //object Map
Run Code Online (Sandbox Code Playgroud)

但是,我想使用Java enum(来自共享库)来实现这一点.例如,我有一些全局别名:

type Country = my.bespoke.enum.Country
val Country = my.bespok.enum.Country //compile error: "object Country is not a value"
Run Code Online (Sandbox Code Playgroud)

这样做的原因是我希望能够使用如下代码:

if (city.getCountry == Country.UNITED_KINGDOM) //or...
if (city.getCountry == UNITED_KINGDOM)
Run Code Online (Sandbox Code Playgroud)

但是,在同时导入我的类型别名时这是不可能的.注意:如果我没有声明预定义类型并导入它,此代码将正常工作!我可以使用一些语法来实现这个目的吗?

Set*_*sue 5

Scala 2.8引入了包对象的概念.2.7中Predef中的很多东西都被移到了scala包的包对象中.

"如何创建全局别名"形式的问题通常有答案:使用包对象.(你不能让一个真正的全球性的别名自己,权力是留给斯卡拉开发者,但你可以使自己的名称或别名可用整个包及其子包之一,由于包斯卡拉真正嵌套性质.)

遗憾的是,包对象上没有SID(Scala改进文档),但一些有用的链接包括: