开发者

How to define a parameterless constructor in Scala

开发者 https://www.devze.com 2023-01-07 19:08 出处:网络
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.

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?


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")
  (...)
}


@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.
0

精彩评论

暂无评论...
验证码 换一张
取 消