44问答网
所有问题
为什么android的成员变量要定义final才能在方法里面用?
如题所述
举报该问题
推荐答案 推荐于2018-03-12
因为你这个变量ll是onCreate()方法的一个局部变量,而在onClick()方法里面的new onClickListener(){}其实是以onClickListener接口为基础隐式创建了一个主类的内部类,也就是说new onClickListener(){}中括号内的东西,和oncreate()方法的作用域不同。所以如果你要跨作用域使用的话,方法有两种:一种就是你看到的在局部作用域内将属性声明为final的,第二种就是把你的方法属性的声明放到方法外作为一个类属性,这个时候由于内部类是在主类里边的,所以它可以访问主类的全部属性。
修正一下:两种方法都不是跨作用域使用,而是用不同的方法将ll变量的作用域扩大。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://44.wendadaohang.com/zd/Y6KYDZ6GRRK3ZGKDDDZ.html
其他回答
第1个回答 2013-12-06
局部内部类,要引用外部方法的局部变量的话就要加final,第二张图中LinearLayout ll是类的属性,作用域是整个类,类中的方法都可以引用(静态方法除外)。
第2个回答 推荐于2016-12-04
这是因为你的listener实际上是使用了内部类,内部类当然不知道外部方法的变量了。但是外部类的变量是可以看到的,如果要在方法内让其内部类看见该方法的变量就要加上final来保证在改方法中只有一个ll,包括它的内部类。不知道你明白没有~~本回答被提问者采纳
相似回答
android
编程
中
final
是
什么
意思
答:
final
如果用在类中就是最终类,不能被继承;若用在
变量中
,就相当于是一个常量;用在函数中,这个
方法
不能被重写;就是这个意思 本回答被提问者和网友采纳 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 du瓶邪 推荐于2016-06-11 · TA获得超过2.4万个赞 知道大有可为答主 回答量:1.7万 采纳...
JAVA接口
中成员变量必须
是
final
类型的,
为什么
答:
java接口中成员变量必须是final类型的原因如下:1.
接口中的数据对所有实现类只有一份,所以是static2.要使实现类为了向上转型成功,所以必须是final的.这个举例子很好理解.比如接口A
,A有变量value.实现类A1,A2,可以向上转型.假如代码中有一句:A a=null; a=...(2)实际实现类 System.out.printl...
java
中为什么
引用外部类
的变量
和
方法
都要是
final内
型 的
答:
即使外部变量不是final,编译器也可以如此处理:自己定义一个同类型的变量,然后在构造方法中赋值就行了
。原因就是为了让我们能够挺合逻辑的直接使用外部变量,而且看起来是在始终使用 外部的arg变量(而不是赋值以后的自己的字段)。考虑出现这种情况:在局部内部类中使用外部变量arg,如果编译器允许arg不是...
...
为什在定义
常量
中要
加修饰符
final?
到底起
什么
作用呢,能不能不加...
答:
另外,
final变量定义
的时候,可以先声明,而不给初值,这
中变量
也称为final空白,无论什么情况,编译器都确保空白
final在
使用之前必须被初始化。但是,final空白在final关键字
final的
使用上提供了更大的灵活性,为此,一个类
中的final
数据
成员
就可以实现依对象而有所不同,却有保持其恒定不变的特征。
大家正在搜
final修饰的成员变量
成员变量和局部变量的区别
final成员变量
final成员变量初始化
set方法赋值final变量
final变量什么时候初始化
final变量传入方法
final修饰的变量存在哪
final修饰的变量需要初始化
相关问题
java,Android,第18行为什么要定义成final类...
android,,方法里调用button,需要时final类...
JAVA接口中成员变量必须是final类型的,为什么
java 中为什么引用外部类的变量和方法都要是final内型...
为什么Java匿名内部类的方法中用到的局部变量都必须定义为f...
在Java中,为什在定义常量中要加修饰符final?到底起什...
java的问题,那几个变量为什么要在前面假如final呢?
Java接口中的成员变量为什么必须是public stati...