Wolkenarchitekt
Wolkenarchitekt

Reputation: 21248

How to define a parameterless constructor in Scala

This question is so stupid... Anyway, i just can't find the right information, because every Scala-constructor example class i see works with at least one parameter.

I want to have this class translated from Java to Scala:

public class SubscriptionConverter extends Converter {
  public SubscriptionConverter() {
    Context ctx = new InitialContext();
    UserEJB userEJB = (UserEJB) ctx.lookup("java:global/teachernews/UserEJB");
  }
  (...)
}

So i only have a parameterless constructor. I messed around in Scala with this(), but i couldn't get a similar example like the one above working. How do i do i write that in Scala?

Upvotes: 4

Views: 1523

Answers (2)

retronym
retronym

Reputation: 55028

@dbyrne has covered the most important parts, but I'll add a few side details.

  1. If a class has no parameters, and it's immutable, consider declare it as an object instead.
  2. The constructor defined by statements at the class level and by parameter lists after the class name is known as the primary constructor. * Auxiliary constructors* are defined by def this() = .... Unlike Java, each auxiliary constructor must delegate to the primary constructor.
  3. When you declare a primary constructor with zero parameter lists, the compiler will automatically add a single, empty parameter list. If you define a constructor with one implicit parameter list, the compiler will add an empty parameter list before this.

Upvotes: 4

dbyrne
dbyrne

Reputation: 61101

Any statements declared at the class level are executed as part of the default constructor. So you just need to do something like this:

class SubscriptionConverter extends Converter {
  val ctx = new InitialContext
  val userEJB = ctx.lookup("java:global/teachernews/UserEJB")
  (...)
}

Upvotes: 11

Related Questions