12

デフォルトのメソッドがJava 8に追加されたので、デフォルトのコンストラクタを作成する方法はありますか?

私はもう試した:

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

    }
...

<identifier> expectedNetbeans からエラーを取得する

必要な理由 私は Gson を使用してオブジェクトをシリアル化し、「引数なしのコンストラクターを呼び出すことができません..」というエラーを取得しています。Gson のInstanceCreatorを使用してこの問題を解決できることはわかっています。しかし、デフォルトのコンストラクタを作成する方法はありますか?

アップデート

私は自分のコードで問題を発見しました。使っていました

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

それ以外の

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

そのため、サブクラスにはデフォルトのコンストラクターがありましたが、逆シリアル化コードは正しくありませんでした。しかし、デフォルトのコンストラクタの問題は依然として残っています。

4

5 に答える 5

11

いいえ、これは不可能です。

  1. インターフェースでは意味がない
  2. インターフェイスを実装する場合、クラスにはすでにデフォルトのコンストラクター (引数のないコンストラクター) があります。

実装に「デフォルトのコンストラクター」が必要な場合は、抽象クラスを使用することをお勧めします。

于 2014-04-02T12:12:29.187 に答える
2

Constructorで を提供しても意味がありませんInterface

initialize()代わりにデフォルトのメソッドを提供することに意味があるかどうかを確認してください。

于 2014-04-02T12:11:05.343 に答える
1

シリアル化するクラスにデフォルトのコンストラクターを追加する必要があります。

于 2014-04-02T12:11:08.307 に答える
0

はい、ちょっと!できるよ:

public interface MyInterface {
  MyInterface NO_OP = new MyInterface() {};
}
于 2018-12-13T18:10:34.663 に答える