In Java, it is possible to inherit from the inner class according to each instance by calling super()
via the reference of the enclosing class.
// Outer.java
public class Outer {
class Inner {}
}
// Unrelated.java
public class Unrelated extends Outer.Inner {
public Unrelated(Outer ref) {
ref.super();
}
}
Is it possible to do the same with Scala?
I think in Scala you would do
class Outer {
class Inner
}
val ref = new Outer
class Unrelated extends ref.Outer
Or even
def Unrelated(ref: Outer) = new ref.Inner {}
Which is short for
def Unrelated(ref: Outer) = {
class Unrelated extends ref.Inner
new Unrelated
}
2 Likes
Thank you. I found out that there is a way to declare a variable of the enclosing class type or use it as a method argument.
It doesn’t seem to be possible to solve using constructor arguments like Java…
(But, Scala seems simpler than Java.)