7.8.1 finalデータ
JAvaのfinalデータに対する要求は、使用前の初期化及び初期化後に値又は参照(非基本データの場合)を変更しなければならないため、JAVAは宣言時に初期化しない、いわゆる空白finalを許可するが、すべてのコンストラクタで初期化しなければならない.また、JAVAのfinalデータの初期化は既知定数に限らず、入力パラメータ/乱数などのコンパイル時に特定できる値も許容する.
package com.cnsuning.util;
import java.util.Date;
import java.util.Random;
public class Printer {
private final String SYS_NAME;
private final float SYS_VERSION;
private final int RANDOM_NUM;
public Printer(String sys_name) {
SYS_NAME = sys_name;
SYS_VERSION = 1.0f;
Random rand = new Random((new Date()).getTime());
RANDOM_NUM = rand.nextInt(10);
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "sys_name:"+SYS_NAME+",sys_version"+SYS_VERSION+",sys_num:"+RANDOM_NUM;
}
public static void print(Object obj){
System.out.print(obj);
}
public static void println(Object obj){
System.out.println(obj);
}
public static void println(){
System.out.println();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
package com.cnsuning.src;
import com.cnsuning.util.Printer;
public class Main {
public Main() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
for(int i=0;i<5;i++){
Printer p1 = new Printer("windows 7");
System.out.println(p1);
}
}
}
, final , , , , final .