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 objectInstead of static keyword Scala has singleton object. A Singleton object is an object which defines a single object of a class. A singleton object provides an entry point to your program execution. If you do not create a singleton object in your program, then your code compile successfully but does not give output.
A Scala trait with no method implementation is just an interface at the bytecode level and can thus be used in Java code like any other interface.
Scala Singleton Object Singleton object is an object which is declared by using object keyword instead by class. No object is required to call methods declared inside singleton object. In scala, there is no static concept. So scala creates a singleton object to provide entry point for your program execution.
A singleton object named the same as a class is called a companion object. Also a companion object must be defined inside the same source file as the class.
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()); } }
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); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With