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