Interfaceにコンストラクタがないので、javaのインタフェースの変数を初期化するのは誰ですか?javaのインタフェースの変数を初期化するのは誰ですか?
-3
A
答えて
3
Javaは、interfaces
の暗黙的修飾子を使用します。だから、インターフェース:
public interface I {
String FIELD = "Some field";
void method();
}
は、実際には以下のように書くことができる
public interface I {
public static final String FIELD = "Some field";
public abstract void method();
}
は、その後、あなたは、インターフェイスのフィールドすべてがpublic static final
とメソッドpublic abstract
あることがわかります。
フィールドがstatic final
およびstatic-initializer-blocks
であるため、インターフェイスでは許可されていないため、直接初期化する必要があり、コンストラクタは使用されません。
2
これはところで、あまりにも、クラス内のpublic static final
変数よりも違いはありません - それ一定値javap
出力として - まあ、それはconstant
なので、それは、コンストラクタで初期化されません。
class Test {
public static final int x = 5; // ACC_PUBLIC, ACC_STATIC, ACC_FINAL
// ConstantValue: int 5
public int y = 3; // putfield , initialized inside default constructor
}
EDITホルガーはが静的ブロック内の初期化コードがあることを彼のコメントに右です。
interface Test {
C c;
static {
c = new C();
}
}
関連する問題
- 1. 変数javaの初期化
- 2. Java:スーパークラスのプライベート変数の初期化
- 3. ローカル変数の初期化のJava
- 4. インタフェースのオブジェクトをメソッドの引数として初期化する?
- 5. オブジェクト変数の初期化 - Javaアプローチ、Pythonのアプローチですか?
- 6. java配列変数の初期化
- 7. 静的変数の初期化java
- 8. Javaのコンストラクタの前に最終変数を初期化する
- 9. JavaでOSインタフェースを実装するのは誰ですか?
- 10. TensorFlowでは、初期化されていない変数を初期化する方法はありますか? TensorFlowで変数を初期化する
- 11. リストで変数を初期化する
- 12. Cで変数を初期化する#
- 13. コンパウンドリテラルで変数を初期化する
- 14. 変数の初期化
- 15. GUID変数の初期化
- 16. thread_local変数の初期化
- 17. スレッドローカル変数の初期化
- 18. Gradle変数の初期化
- 19. 変数の初期化 - パイソン
- 20. スカラー変数の初期化
- 21. クラス変数の初期化?
- 22. Tensorflow変数の初期化
- 23. デフォルトのコンストラクタに変数を初期化するか、またはインラインで変数を初期化するかの違いはありますか?
- 24. jspページのテキストボックス値をjava変数で初期化
- 25. 初期化変数は
- 26. while式の変数を初期化する - ステートメントではない
- 27. シェルコマンドの結果でCMake変数を初期化するには
- 28. 条件変数初期化の方法は何ですか?
- 29. プリミティブ変数の初期化は正しいですか?
- 30. java beginner:クラス変数を初期化する
:
は次のようになり、コンパイル時に静的ブロックにつながる:インタフェースの参照を持っている
:たとえば、クラスを持ちますインターフェイスのインスタンスを作成することはできません。そのインタフェースの実装者のインスタンスを作成することしかできません*具体的なクラス*。さらに、インターフェースは定義によってメンバーを持つことができません。 – Michael
@Michael:あなたは "メンバー"の珍しい意味を使用しているようです。メソッドや定数フィールドはメンバであるため、インタフェースはメンバを持つことができます。ネストされた型もメンバーです。 – Holger
@Holger私の悪い。私は「畑」を意味しました。 – Michael