Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

access java base class's static member in scala

Ihave some codes written in Java. And for new classes I plan to write in Scala. I have a problem regarding accessing the protected static member of the base class. Here is the sample code:

Java code:

class Base{
    protected static int count = 20;
}

scala code:

class Derived extends Base{
    println(count);
}

Any suggestion on this? How could I solve this without modifying the existing base class

like image 577
Mike Avatar asked Aug 20 '12 07:08

Mike


1 Answers

This isn't possible in Scala. Since Scala has no notation of static you can't access protected static members of a parent class. This is a known limitation.

The work-around is to do something like this:

// Java
public class BaseStatic extends Base {
  protected int getCount() { return Base.count; }
  protected void setCount(int c) { Base.count = c; }
}

Now you can inherit from this new class instead and access the static member through the getter/setter methods:

// Scala
class Derived extends BaseStatic {
  println(getCount());
}

It's ugly—but if you really want to use protected static members then that's what you'll have to do.

like image 177
DaoWen Avatar answered Sep 21 '22 14:09

DaoWen