0

以下は定数が宣言されているインターフェイスであるというクエリがあります。ここでトランジェントを使用することもできますか。そうでない場合は、インターフェイス内にトランジェント変数を使用できない理由は何ですか。シリアル化プロセスでのトランジェントの役割についてはよく知っています。 。

 interface OlympicMedal {
  static final String GOLD = "Gold";
  static final String SILVER = "Silver";
  static final String BRONZE = "Bronze";
}
4

4 に答える 4

2

インターフェイスでは定数ではなく列挙型を使用することをお勧めします。使用しているパターンは、Java 5 以前のコードでは一般的です。その後、列挙型が導入されました。型安全性が導入されており、推奨される方法です。

シリアル化していて一時的なプロパティが必要な場合、これは列挙型のシリアル化に役立つ場合があります

于 2012-09-02T06:43:56.710 に答える
1

インターフェイスで定義されたすべての変数は暗黙的に「静的」です。「一時的」は「静的」以外のフィールドに対してのみ意味があります。したがって、あなたが求めていることは意味がありません。

于 2012-09-02T22:26:04.403 に答える
0

インターフェイスで宣言されたすべての変数はpublicstaticおよびfinalです。実際、これらは、Interface

同じ理由で、 で変数を作成するときに、これらの修飾子を明示的に指定する必要はありませんinterface。あなたの例では、次のように言うことができました:

interface OlympicMedal {
    String GOLD = "Gold";
    String SILVER = "Silver";
    String BRONZE = "Bronze";
}
于 2012-09-02T04:32:51.803 に答える
0

まず、インターフェイスは、そのインターフェイスを実装するクラスによって定義される操作に関する契約のみを提供します。状態を持たないため、インターフェイスでメンバー変数を宣言することはできません (インターフェイス定義で宣言したものは定数です)。そのため、インターフェイスに一時的なメンバーが存在する可能性はありません。

于 2012-09-02T04:33:10.877 に答える