加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 对Java枚举使用类型别名

发布时间:2020-12-16 18:10:19 所属栏目:安全 来源:网络整理
导读:我想实现类似于 scala如何将Map定义为预定义类型和对象的东西.在Predef中: type Map[A,+B] = collection.immutable.Map[A,B]val Map = collection.immutable.Map //object Map 但是,我想使用Java枚举(来自共享库)来执行此操作.例如,我有一些全局别名: type
我想实现类似于 scala如何将Map定义为预定义类型和对象的东西.在Predef中:

type Map[A,+B] = collection.immutable.Map[A,B]
val Map = collection.immutable.Map //object Map

但是,我想使用Java枚举(来自共享库)来执行此操作.例如,我有一些全局别名:

type Country = my.bespoke.enum.Country
val Country = my.bespok.enum.Country //compile error: "object Country is not a value"

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

if (city.getCountry == Country.UNITED_KINGDOM) //or...
if (city.getCountry == UNITED_KINGDOM)

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

解决方法

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

“如何创建全局别名”形式的问题通常有答案:使用包对象. (你不能自己创建一个真正的全局别名,为Scala开发人员保留权力,但是你可以在你的一个包及其子包中提供自己的名字或别名,这要归功于Scala中包的真正嵌套特性.)

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

> http://www.scala-lang.org/node/1564
> http://programming-scala.labs.oreilly.com/ch07.html
> http://blog.objectmentor.com/articles/2009/06/05/bay-area-scala-enthusiasts-base-meeting-whats-new-in-scala-2-8

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读