40

I have a Scala object that I need to use in a Java class.

Here's the Scala object

object Person {
  val MALE = "m"
  val FEMALE = "f"
}

How can I use this Scala object in Java?

I have tried the following so far without success (compile errors):

  • Person.MALE() //returns a String which is useless as I want the actual Person object
1

2 Answers 2

60

Use Person$.MODULE$. See also


Edit: A working example (I checked, it compiles and works): Scala:

object Person {
  val MALE = "m";
}

Java counterpart:

public class Test {
    Person$ myvar = Person$.MODULE$;

    public static void main(String argv[]) {
        System.out.println(new Test().myvar.MALE());
    }
}
Sign up to request clarification or add additional context in comments.

2 Comments

This doesn't really work either. Eclipse tells me: Person$ cannot be resolved to a variable'code and the code doesn't compile
@user786045, you need to add an import statement for Person$ manually. Eclipse does not add it automatically on "organize imports".
1

In case you use a package object, the access is a bit different

Scala:

package my.scala.package

package object Person {
  val MALE = "m";
}

Java counterpart:

public static void main() {
  System.out.println(my.scala.package.Person.package$.MODULE$.MALE);
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.