static final class variable
との間で混乱が生じてfinal instance variable
います。
サンプルコードは次のとおりです。-
class Foof{
final int size=3;
final int whuffie;
Foof()
{
whuffie=42;
}
public static void main(String [] args){
Foof obj1 = new Foof();
Foof obj2 = new Foof();
obj1.size=53; //compile time error
System.out.println(obj1.size);
obj2.whuffie=45; //compile time error
System.out.println(obj2.whuffie);
}
}
エラー:-
ankit@stream:/home/Data/JAVA/practice/src/test.com/test-20121031_static_demystified$ javac Foof.java
Foof.java:14: error: cannot assign a value to final variable size
obj1.size=53; //compile time error
^
Foof.java:16: error: cannot assign a value to final variable whuffie
obj2.whuffie=45;
^
2 errors
だから私の質問は、異なるインスタンスごとに異なる値を持つことができない場合、最終的なインスタンス変数を持つことのポイントは何ですか?つまり、インスタンスごとに同じ値がある場合、同じ目的を果たし、それらにアクセスするためにオブジェクトを作成する必要がないため、クラス変数(静的最終クラス変数)として宣言しないのはなぜですか。
編集-1:-
class Foof{
final int size=3;
final int whuffie;
Foof()
{
whuffie=42;
size = 23; //compile-time error.
}
public static void main(String [] args){
Foof obj1 = new Foof();
Foof obj2 = new Foof();
//obj1.size=53;
System.out.println(obj1.size);
//obj2.whuffie=45;
System.out.println(obj2.whuffie);
}
}
エラー:-
Foof.java:8: cannot assign a value to final variable size
size = 23;
^
1 error
エラーによると、オブジェクトの作成時に最初のサイズに値=3が割り当てられていることがわかります。