- About Scala
- Documentation
- Code Examples
- Software
- Scala Developers
Static Inner Classes (Again?)
Tue, 2009-03-17, 18:30
In trying to user Javamail from scala, I've hit a weird problem. I'm not sure
if it's quite the same as some of the static inner class issues I saw in my
search, but if it is feel free to shun me.
Basically, Javamail has a class Flags with an inner class Flag, and
javax.mail.Message has a method that accepts a Flags.Flag (setFlag()).
message.setFlag(Flags.Flag.DELETED, true)
leads to:
error: type mismatch;
found : javax.mail.Flags.Flag
required: javax.mail.Flags$Flag
message.setFlag(Flags.Flag.DELETED, true))
It's even worse if I make it:
val delflag = Flags.Flag.DELETED
message.setFlag(delflag, true)
then scalac gives me:
java.lang.Error: no-symbol does not have owner
and a long stack trace :)
Any hints?
Tue, 2009-03-17, 20:57
#2
Re: Static Inner Classes (Again?)
Sorry -- I gratefully accept the rebuke :)
scalac -version
Scala compiler version 2.7.3.final -- Copyright 2002-2009, LAMP/EPFL
java -version
java version "1.5.0_16"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_16-b06-284)
Java HotSpot(TM) Client VM (build 1.5.0_16-133, mixed mode, sharing)
Paul Phillips wrote:
>
> On Tue, Mar 17, 2009 at 10:22:27AM -0700, awans wrote:
>> Basically, Javamail has a class Flags with an inner class Flag, and
>> javax.mail.Message has a method that accepts a Flags.Flag (setFlag()).
>>
>> message.setFlag(Flags.Flag.DELETED, true)
>>
>> leads to:
>> error: type mismatch;
>> found : javax.mail.Flags.Flag
>> required: javax.mail.Flags$Flag
>> message.setFlag(Flags.Flag.DELETED, true))
>
> scala> new internet.MimeMessage(Session.getDefaultInstance(new
> java.util.Properties()))
> res1: javax.mail.internet.MimeMessage =
> javax.mail.internet.MimeMessage@92f292
>
> scala> res1.setFlag(Flags.Flag.DELETED, true)
>
> scala> val delflag = Flags.Flag.DELETED
> delflag: javax.mail.Flags.Flag = javax.mail.Flags$Flag@e06e0e
>
> scala> res1.setFlag(delflag, true)
>
> scala> res1.getFlags
> res5: javax.mail.Flags = javax.mail.Flags@2
>
> scala> res5 contains delflag
> res7: Boolean = true
>
>> Any hints?
>
> My hint is to supply more information. I suggest never asking a scala
> question without stating what version you're using.
>
Tue, 2009-03-17, 21:57
#3
Re: Static Inner Classes (Again?)
On Tue, Mar 17, 2009 at 12:53:04PM -0700, awans wrote:
> scalac -version
> Scala compiler version 2.7.3.final -- Copyright 2002-2009, LAMP/EPFL
Well that's not your problem. Going to have to be this then:
https://lampsvn.epfl.ch/trac/scala/ticket/1687
Heh, I forgot that bug is assigned to me (not because I have much to do
with it, but because I objected to it being closed.) Anyway, since I
don't plan on fixing it anytime super soon, next choice is to upgrade
your mail.jar.
On Tue, Mar 17, 2009 at 10:22:27AM -0700, awans wrote:
> Basically, Javamail has a class Flags with an inner class Flag, and
> javax.mail.Message has a method that accepts a Flags.Flag (setFlag()).
>
> message.setFlag(Flags.Flag.DELETED, true)
>
> leads to:
> error: type mismatch;
> found : javax.mail.Flags.Flag
> required: javax.mail.Flags$Flag
> message.setFlag(Flags.Flag.DELETED, true))
scala> new internet.MimeMessage(Session.getDefaultInstance(new java.util.Properties()))
res1: javax.mail.internet.MimeMessage = javax.mail.internet.MimeMessage@92f292
scala> res1.setFlag(Flags.Flag.DELETED, true)
scala> val delflag = Flags.Flag.DELETED
delflag: javax.mail.Flags.Flag = javax.mail.Flags$Flag@e06e0e
scala> res1.setFlag(delflag, true)
scala> res1.getFlags
res5: javax.mail.Flags = javax.mail.Flags@2
scala> res5 contains delflag
res7: Boolean = true
> Any hints?
My hint is to supply more information. I suggest never asking a scala
question without stating what version you're using.