Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

is there a way to add a default constructor to an interface

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.

like image 923
Joshua Kissoon Avatar asked Apr 02 '14 12:04

Joshua Kissoon


People also ask

Can we make constructor default?

Java compiler automatically creates a default constructor (Constructor with no arguments) in case no constructor is present in the java class.

WHO adds default constructor in Java?

The default constructor in Java initializes the data members of the class to their default values such as 0 for int, 0.0 for double etc. This constructor is implemented by default by the Java compiler if there is no explicit constructor implemented by the user for the class.

Can I add a constructor in an interface C#?

Interfaces can contain properties and methods, but not fields/variables. Interface members are by default abstract and public. An interface cannot contain a constructor (as it cannot be used to create objects)


2 Answers

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".

like image 141
thobens Avatar answered Nov 04 '22 11:11

thobens


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.

like image 2
AlexWien Avatar answered Nov 04 '22 12:11

AlexWien