关于inner class 为什么inner class在成员方法里面定义的时候,如果要使用该方法中的局部变量,这个局部变量一定要是final的希望高手们说的详细点,我想知道为什么,谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好像只有匿名的inner Class才有这个规定吧,这似乎和匿名机制有关,也许在匿名innerClass中非只读外部变量不安全?谁知道设计者怎么想的。注意:我的语气如此不坚定大概是有原因的! 因为一个inner class在编译后生成一个独立的class文件,要对定义该方法中的局部变量进行访问就必须要在这个类加载之前该局部变量已经被加载到内存了,由于普通的局部变量只存在一个值,如果不用final,那么inner class中就无法访问到该变量的reference了! “由于普通的局部变量只存在一个值,如果不用final,那么inner class中就无法访问到该变量的reference了!”这句话有点不明白, 用final 修饰的变量不就是初始化了之后不能被修改吗? 在方法中定义一个嵌套类,注意嵌套类不可以访问方法的局部变量。 因为方法的局部变量只存在与方法作用期间,故localvalue不可访问。而final变量的生命周期超出了方法,所以fianlvalue可用。上面的是从网上看到人家写的,是不是一个变量被修饰成final之后他的生命周期就变长了阿? 同意dogod~内部类分member inner class , local inner class , anonymous inner class; 其主要目的是对外部隐藏类的存在性。您所说的情况属于匿名内部类情况,就是不声明类名,直接使用“new”产生一个对象实例。看书的时候也没有仔细考虑过只是记得这种类在使用外部的局部变量时变量必须为final. 怎么在一个java项目中使用自己的包呢? Java 窗体监听问题 关于java socket的问题 如何实现删除前请用户确认的功能! 通DatagramSocket绑定不了对方端口的问题 软件启动动画怎么加载 招聘.net winform开发人员 急求一个如何用java把目录下的图片备份到另外的目录下面 圣诞快到了,祝大家圣诞快乐!! ! 这个功能怎么实现 编译时找不到JAVA类的问题 找不到类
这句话有点不明白, 用final 修饰的变量不就是初始化了之后不能被修改吗?
因为方法的局部变量只存在与方法作用期间,故localvalue不可访问。而final变量的生命周期超出了方法,所以fianlvalue可用。
上面的是从网上看到人家写的,是不是一个变量被修饰成final之后他的生命周期就变长了阿?