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        .