Question

With default methods now added to Java 8, is there any way to create a default constructor?

I've tried:

public interface KadContent<T>
{
    public default KadContent()
    {

    }
...

Getting the error <identifier> expected from Netbeans

Why Needed? I'm using Gson to serialize the objects and getting the "unable to invoke no-args constructor .." error and I do know that I can resolve this problem using Gson's InstanceCreator. But is there a way to create a default Constructor?

Update

I've found the problem with my own code. I was using

gson.fromJson(new String(data), InterfaceName.class);

instead of

gson.fromJson(new String(data), ClassName.class);

So even though the subclass had default constructors, the deserialization code was incorrect. But the question of default constructor still stands.

Was it helpful?

Solution

No, this is not possible.

  1. It does not make sense in an interface
  2. If you implement an interface, the class has already a default constructor (the one without arguments)

You may want to use an abstract class if you want implementations have a "default constructor".

OTHER TIPS

It does not make sense to provide an Constructor in an Interface.

Check if it makes sense for you to provide a default initialize() method instead.

Constructors are when the objects come into picture and the fact that a object for an interface cannot be constructed is SOUND, be it Java, C# or Java8

So... if you have any functionality that you would want to define by default in the interface level, Java8 introduces the concept of Default Methods.

You need to add the default constructor to the class you want to serialize.

Yes, kind of! You can do:

public interface MyInterface {
  MyInterface NO_OP = new MyInterface() {};
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top