29

I am new to Scala. I am only able to write basic code thus far, but I want to start using it more concretely, rather than just learning theory.

Let's say I have the following Java code in HelloWorld.java:

public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Hello, World");
    }

}

What would the code be to invoke it from Scala?

1
  • @Reimeus: No.. I want to call HelloWorld function from scala? Commented Mar 19, 2013 at 18:06

3 Answers 3

46

In your example, you just have a main, not a function you would necessarily call from somewhere else. But let's said you did have a function like

package com.example.hello;

public class HelloWorld {
  public static void sayHello() {
    System.out.println("Hello, world!");
  }
}

(I also added a package for your example, for completeness). Then in your Scala code, you could do:

import com.example.hello._

object GreetWorld extends App {
  (0 until 10).foreach {
    HelloWorld.sayHello()
  }
}

to say hello using the Java function 10 times in Scala. The ._ in the import imports all members of the package, or alternatively you could just import com.example.hello.HelloWorld. You could even import the method itself with import com.example.hello.HelloWorld.sayHello so that you don't need to reference the HelloWorld object in your code.

Both languages compile into JVM bytecode, so calling Java code from Scala is very simple, although calling Scala from Java can be trickier if there are are implicit parameters involved.

Sign up to request clarification or add additional context in comments.

8 Comments

Hi, May I request you to please write the code completely.. I am very new to scala.. My scala codeblock is inside the "object" definition.. and rest of the stuff is same.. Does scala and java files should be in same folder??
I am getting this error : helloworld.scl:1: error: object example is not a member of package com import com.example.hello
@Fraz if you still have the problem, see changes above
(0 to 10) is 11 times, not 10. the range is inclusive.
Maybe the code was updated, but it says 0 until 10, not 0 to 10, and until is not inclusive.
|
2

The equivalent code would be:

object HelloWorld extends App {
  println("Hello, world!")
}

If you saved that code in a file called HelloWorld.scala then you could compile and run it like so:

$ scalac HelloWorld.scala

$ scala HelloWorld
Hello, world!

Or if you are working in the REPL:

scala> :paste
// Entering paste mode (ctrl-D to finish)

object HelloWorld extends App {
  println("Hello, world!")
}

// Exiting paste mode, now interpreting.

defined module HelloWorld

scala> HelloWorld.main(Array.empty[String])
Hello, world!

Comments

2
object HelloWorld{
      def main(args: Array[String]): Unit = {
      println("hello world")
    }

}

or

object HelloWorld extends App {
  println("Hello, world!")
}

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.