Consider this code:
class Outer {
class Inner
}
In Java it would be possible to create an instance of Inner
with:
Outer.Inner inner = new Outer().new Inner();
I know I can write this in Scala:
val outer = new Outer
val inner = new outer.Inner
But I wonder if it is possible to express the same without the assignment to outer
.
Both
new Outer.new Inner
and
new (new Outer).Inner
are not accepted by the compiler.
Is there something I'm missing?
First of all, I doubt that the instantiation in one go is any meaningful -- you are like throwing away the Outer
instance, keeping no reference to it. Makes me wonder, if you weren't thinking of a Java static inner class, like
public class Outer() {
public static class Inner() {}
}
which in Scala would translate to Inner
being an inner class of Outer
's companion object:
object Outer {
class Inner
}
new Outer.Inner
If you really want an inner dependent class, and you just want more convenient syntax for instantiating it, you could add a companion object for it:
class Outer {
object Inner {
def apply() = new Inner()
}
class Inner
}
new Outer().Inner()
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