scala访问限定符有哪些保证?

时间:2012-12-04 21:46:11

标签: scala scala-java-interop

我有一个包含此代码的课程:

package shop.orders.services.email

private[services] class EmailService {...}

然后在另一个包中,我使用该类:

package shop.ui

import shop.orders.services.email.EmailService

class PaymentConfirmation extends WithFacesContext {

    var emailService: EmailService = null

查看生成的字节码,没有任何访问修饰符的迹象,这是有道理的,因为Java不支持此类访问限制。那么如果我创建一个包含块1之类的代码的库,并尝试针对库编译块2会发生什么 - 编译器不会失败,因为信息丢失了。或者它是否包含在清单中?

我正在使用Scala 2.9.2。

1 个答案:

答案 0 :(得分:10)

您可以从Java引用EmailService,但不能从Scala引用,因为Scala将类的签名存储为scala.reflect.ScalaSignature注释。 Scala编译器将失败并出现以下错误:

  

包电子邮件中的类EmailService无法在包shop.orders.services.email

中访问