局部内部类调当前方法的局部变量时,局部变量用final修饰吗?我的jdk版本是1.7的


class NeiClass3

{

public static void main(String[] args) 

{

A a = new A();

a.show();

}

}

class A

{

int num1 = 10;

//内部类B

class B

{

int num2 = 20;

}

//方法

public void show(){

final int num3 = 30; //?????????????????????


//局部内部类

class C

{

int num4 = 40;

public void show2(){

//System.out.println("局部内部类show"+num4);

System.out.println("局部内部类show"+num3);

//System.out.println("局部内部类show"+num1);

}

}

new C().show2();

}

}

qq_雨过之后_1
浏览 1532回答 3
3回答

onemoo

是的,在 1.8 之前,“本地(local)变量”必须声明为 final 才能被“本地内部类(local inner class)”所访问。在 1.8 中限制放宽了一些:不必须用 final 修饰,只要是“事实常量”就可被 local inner class 访问。

望远

并没有这个限制,final这是修饰常量的,局部变量用final修饰吗?所以既然是变量就不能用final来修饰。常量只能在定义的时候完成初始化,并禁止修改常量值。对方法的局部变量只是要求在定义时完成初始化即给定初值(虽然要求给定初值,但是依旧是变量),因为局部变量的值如果不初始化就是一个随机值,不像属性一般,即便是没有初始化也有一个初始值如:class Test{     public int num;//默认初值为0     public void test()     {         int sum=0;//局部变量要求在定义时完成初始化即给定初值     } }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java