X.new will be confusing since it looks like
new is a method in
object X, but it’s not. It’s a method named
class X. The naming here is inconsistent. I think to make this make sense we’d need to name the constructor method
new and then have constructors all go in companion objects instead of the classes. Or use
X.this, which I don’t think is better.
Additionally, since we want to be able to call the constructors from Java, the compiler would have to make the static
new methods call the actual constructors, or vice versa.