- About Scala
- Documentation
- Code Examples
- Software
- Scala Developers
how to get case object inside a companion object from Java
Hi all,I would like to get ADDED in Java:
sealed abstract class QStatus(val char: Char)object QStatus { case object ADDED extends QStatus('A') ...}
This solution does not work:
QStatus$.ADDED$.MODULE$
I have seen a similar case on StackOverflow but it does not have a companion object:http://stackoverflow.com/questions/2561415/how-do-i-get-a-scala-case-object-from-java
-Andrey
sealed abstract class QStatus(val char: Char)object QStatus { case object ADDED extends QStatus('A') ...}
This solution does not work:
QStatus$.ADDED$.MODULE$
I have seen a similar case on StackOverflow but it does not have a companion object:http://stackoverflow.com/questions/2561415/how-do-i-get-a-scala-case-object-from-java
-Andrey










Re: how to get case object inside a companion object from Java
With a little indirection you can get something which might be
acceptable:
sealed abstract class QStatus(val char: Char)
object QStatus {
object enums {
case object ADDED extends QStatus('A')
}
val ADDED = enums.ADDED
}
Pattern matching will still work from scala and the java interface is
public abstract class QStatus extends java.lang.Object implements
scala.ScalaObject{
public static QStatus$enums$ADDED$ ADDED();
public char char();
public QStatus(char);
}
so java users can write QStatus.ADDED()
Re: how to get case object inside a companion object from Java
you can avoid the nasty stuff by adding a simple getter to the outer object
-------- Original-Nachricht --------
> Datum: Thu, 26 Jan 2012 03:34:16 -0800 (PST)
> Von: Andrey Somov
> An: scala-user [at] googlegroups [dot] com
> Betreff: [scala-user] how to get case object inside a companion object from Java
> Hi all,
> I would like to get ADDED in Java:
>
> sealed abstract class QStatus(val char: Char)
> object QStatus {
> case object ADDED extends QStatus('A')
> ...
> }
>
> This solution does not work:
>
> QStatus$.ADDED$.MODULE$
>
> I have seen a similar case on StackOverflow but it does not have a
> companion object:
> http://stackoverflow.com/questions/2561415/how-do-i-get-a-scala-case-obj...
>
> -
> Andrey
>
Re: how to get case object inside a companion object from Java
-Andrey
Re: how to get case object inside a companion object from Java
fullpackage.QStatus$ADDED$.MODULE$
Unfortunately, the package name is required because the Java tool (Eclipse) is confused with such an import statement:
import org.quartzsource.meutrino.facade.QStatus$ADDED$;
It is not beautiful, but it works.-Andrey