I have a class with this code:
package shop.orders.services.email
private[services] class EmailService {...}
Then in a different package, I use that class:
package shop.ui
import shop.orders.services.email.EmailService
class PaymentConfirmation extends WithFacesContext {
var emailService: EmailService = null
Looking at the generated bytecode, there is no sign of any access modifier, which makes sense, as Java does not support such access restrictions. So what happens if I create a library containing code like block one, and attempt to compile block two against the library - there is no chance that the compiler will fail, since the information is lost. Or is it contained in something like a manifest?
I'm using Scala 2.9.2.
You could reference
EmailService
from Java, but not from Scala, because Scala stores the signature of the class as ascala.reflect.ScalaSignature
annotation. The Scala compiler will fail with the following error: