が、これは、いくつかは、その可能性さえ可能主張であり、私はここであまりにもlinkそれを見た..しかし、私は個人的にしようとしたとき、それは私が時間のコンパイルエラーを与えます..私はこのことを意味..を宣言した後、最終変数を初期化することは可能ですか?
、
Class A{
private final String data;
public A(){
data = "new string";
}
}
おかげで
が、これは、いくつかは、その可能性さえ可能主張であり、私はここであまりにもlinkそれを見た..しかし、私は個人的にしようとしたとき、それは私が時間のコンパイルエラーを与えます..私はこのことを意味..を宣言した後、最終変数を初期化することは可能ですか?
、
Class A{
private final String data;
public A(){
data = "new string";
}
}
おかげで
はい、可能です。クラスは小文字のcで書かれています。そうでなければ、あなたのコードは完璧に(識別子を除いて)完全です:
public class A {
private final String data;
public A() {
data = "new string";
}
}
最終的なインスタンス変数は宣言後に初期化できます。
投稿したコードの問題は、大文字のC
です。ボリスが指摘したように、class
であったはずです。
ボリスさんは、コードが問題ないことを示唆しました。しかし、あなたができないことは、最終的な変数データに第2の値を割り当てることです。 data = "another string";
はコンパイルされません。データは最終的なものなので、初期化後にその値を変更することはできません。
public class A {
private final String data;
public A() {
data = "new string";
data = "another string";
}
}
あなたが、その場合には、複数のコンストラクタを持っているあなたは、これらのコンストラクタのそれぞれで、最終的なインスタンスフィールドを初期化しなければならない可能性が高いです。
取得しているコンパイル時エラーは何ですか? – Rocky
あなたのコンパイル時のエラーは、大文字の 'Class'に関係するかもしれません。残りは完全にうまくコンパイルする必要があります。 – home
**空白の最終フィールドのデータが初期化されていない可能性があります。** ...これは私が得るものです。 – ngesh