public final class FinallyTest { private final int params; public FinallyTest() { params=5; }
public FinallyTest(int para) { params=para; } public static void main(String[] args) { FinallyTest ft=new FinallyTest(20); System.out.println(ft.params); } }
eg2:
package mypackage;
public final class FinallyTest { private final int params; public FinallyTest() { this(10); } public FinallyTest(int para) { params=para; } public static void main(String[] args) { FinallyTest ft=new FinallyTest(); System.out.println(ft.params); } }
上面是两个final初始化的例子。下面我们看一下两种错误的例子
eg3
package mypackage;
public final class FinallyTest { private final int params=11;//此处已经赋值 public FinallyTest() { this(10); } public FinallyTest(int para) { params=para; }
Error(18,3): variable params is declared final; cannot be assigned
eg4:
package mypackage;
public final class FinallyTest { private final int params; public FinallyTest() { this(10); } public FinallyTest(int para) {
this.setParams(para);//不能用函数给它赋值必须直接赋值
} public void setParams(int b) { params=b; } public static void main(String[] args) { FinallyTest ft=new FinallyTest(); System.out.println(ft.params); } }
Error(22,2): variable params is declared final; cannot be assigned
eg5
package mypackage;
public final class FinallyTest { private final int params; public FinallyTest() { this(10); } public FinallyTest(int para) { } public static void main(String[] args) { FinallyTest ft=new FinallyTest(); System.out.println(ft.params); } }
Error(10,19): variable params might not have been initialized