Java Constructor Inheritance

Suppose constructors were inherited… then because every class eventually derives from Object, every class would end up with a parameterless constructor. That’s a bad idea. What exactly would you expect: FileInputStream stream = new FileInputStream(); to do? Now potentially there should be a way of easily creating the “pass-through” constructors which are fairly common, but … Read more

How does interfaces with construct signatures work?

Construct signatures in interfaces are not implementable in classes; they’re only for defining existing JS APIs that define a ‘new’-able function. Here’s an example involving interfaces new signatures that does work: interface ComesFromString { name: string; } interface StringConstructable { new(n: string): ComesFromString; } class MadeFromString implements ComesFromString { constructor (public name: string) { console.log(‘ctor … Read more

Default constructor with empty brackets

Most vexing parse This is related to what is known as “C++’s most vexing parse”. Basically, anything that can be interpreted by the compiler as a function declaration will be interpreted as a function declaration. Another instance of the same problem: std::ifstream ifs(“file.txt”); std::vector<T> v(std::istream_iterator<T>(ifs), std::istream_iterator<T>()); v is interpreted as a declaration of function with … Read more

Accessing constructor of an anonymous class

From the Java Language Specification, section 15.9.5.1: An anonymous class cannot have an explicitly declared constructor. Sorry 🙁 EDIT: As an alternative, you can create some final local variables, and/or include an instance initializer in the anonymous class. For example: public class Test { public static void main(String[] args) throws Exception { final int fakeConstructorArg … Read more

Can constructors throw exceptions in Java?

Yes, constructors can throw exceptions. Usually this means that the new object is immediately eligible for garbage collection (although it may not be collected for some time, of course). It’s possible for the “half-constructed” object to stick around though, if it’s made itself visible earlier in the constructor (e.g. by assigning a static field, or … Read more

Can a constructor in Java be private?

Yes, a constructor can be private. There are different uses of this. One such use is for the singleton design anti-pattern, which I would advise against you using. Another, more legitimate use, is in delegating constructors; you can have one constructor that takes lots of different options that is really an implementation detail, so you … Read more