方法中的内部类访问方法局部变量
就是上边这个程序,变量b=10,如果不加final,在dos环境下编译居然可以,这是为什么?请问大侠...
就是上边这个程序,变量b=10,如果不加final,在dos环境下编译居然可以,这是为什么?请问大侠
展开
1个回答
展开全部
应该不可以吧,这不符合Java语法规定。
可能是你做试验的过程有什么问题,我也试过一次从命令行编译你的代码但去掉了 final int b = 10; 中的 final,依然有下面这样的编译错误啊。
J:\>JavaEnv\J2SE7.X64\bin\javac Inner04.java
Inner04.java:13: 错误: 从内部类中访问本地变量b; 需要被声明为最终类型
System.out.println("Score :" + (score + a + b));
^
1 个错误
出错的源码:
class Outer
{
int score = 30;
void show(final int a)
{
int b = 10;
class Inner
{
void display()
{
System.out.println("Score :" + (score + a + b));
}
}
Inner in = new Inner();
in.display();
}
}
public class Inner04
{
public static void main(String[] args)
{
Outer ou = new Outer();
ou.show(16);
}
}
追问
原则上是应该错的,但实际上在DOS系统下确实是正确的,但是在Eclipse重编译,却是错的,所以很纠结,到底什么原因~~
追答
我是在命令行下编译那个文件也是错误的啊,你的试验过程是什么样的,像我上面那样把 DOS 窗口的内容贴出来看看。
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询