0

I have abstract java class which contains nested class declared as protected static:

public abstract class AbstractJavaClass {
  // contains nested class
  protected static class InnerClass {
  ...
  }
}

When I'm trying to instantiate it in Scala class extending AbstractJavaClass like I do in java (i.e. just referring name inside method new InnerClass):

class ScalaClass extends AbstractJavaClass {
   def method = new InnerClass()
}

I get error: type InnerClass is not a member of ScalaClass. What am I doing wrong? The same in java works fine.

dmitry
  • 4,989
  • 5
  • 48
  • 72

1 Answers1

0

Stumbled here: access java base class's static member in scala

It says

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.

Though I couldn't resolve initial issue (when class is protected static), when I changed it to public static in definition of AbstractJavaClass I could use it this way:

class ScalaClass extends AbstractJavaClass {
  import AbstractJavaClass.InnerClass

  def method = new InnerClass
}

Using new InnerClass without import gives the same error.

Community
  • 1
  • 1
dmitry
  • 4,989
  • 5
  • 48
  • 72