`
kris_zhang
  • 浏览: 6190 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

为什么匿名内部类用到的变量必须定为final?

 
阅读更多
如果说匿名内部类无法被继承,那么也只能说匿名内部类是final的。如果一个类是final的,那么所有属于这个类的方法是final的,但它的成员变量并不是。

而且被final的变量还是外部类的,外部类没有必要不让自己修改自己的变量的值。

上述情况其实只发生在内部类引用的变量不是成员变量的情况(如果是成员变量就直接用就好了,不用final修饰)。所以我感觉问题出在:编译的时候,所以的类都会生成相应的class文件,匿名内部类也不例外。所以如果参数不是final的,那么匿名内部类里的信息初始化会出现一些问题(变量的值有可能来回被修改)。我猜测java的设计者也是想问题简单化,直接大家都别改了,正好final还能起到这个作用,所以被final了。
分享到:
评论

相关推荐

    java面试宝典

    47、在java 中一个类被声明为final 类型,表示了什么意思? 12 48、下面哪些类可以被继承? 12 49、指出下面程序的运行结果: 【基础】 13 52、关于内部类: 13 53、数据类型之间的转换: 14 54、字符串操作:如何实现...

    JAVA基础面试题,包含答案

    抽象类是可以有私有方法或私有变量的,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法。 五、 反射的用途及实现 Java 反射机制主要提供了在运行时构造一个类的对象、判断...

    超级有影响力霸气的Java面试题大全文档

    为什么要有GC?  GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域...

    Java面试题-完整版.pdf

    * 为什么使用数据库连接池? + 概述:连接池负责分配、管理和释放数据库连接。 + 核心原因:连接池主要是重复使用一个现有的数据库连接,而不是重新建立一个。 + 不使用会怎样:如果不使用连接池,需要每次连接...

    Java语言开发相关单词

    将变量声明为`static final`表示这是一个静态常量,它的值在整个程序运行期间不会改变,并且可以在不创建类实例的情况下访问。 ### 抽象:`abstract` `abstract`关键字用于声明抽象类或抽象方法。抽象类不能被实例...

    Java领域基础部分JavaSE笔记

    ### Java核心知识点详解 #### 一、Java概述 ##### 1.1 转义字符 - **定义**:在字符串中表示特殊字符的一种方式,通常以反斜杠`\`开头。 - **常见转义字符**: ... - **匿名内部类**:没有名称的内部...

    android学习笔记

    2. **匿名内部类**:没有名字的内部类,常用于实现接口或继承抽象类。 3. **监听器**:用于响应用户事件,如按钮点击事件。 #### 十、Android应用程序解析 1. **Android调试方式**: - `LogCat工具`:用于查看...

    Microsoft.Net常见问题集锦

    为什么要有GC?** - GC(垃圾回收机制)是一种自动管理内存的技术,它负责自动释放不再使用的对象所占用的内存空间。在 .Net 平台上,GC 的存在极大地简化了程序员的工作,避免了手动释放内存导致的内存泄漏等问题...

    java面试800题

    "类的初始化过程 当创建一个对象时,对象的各个变量根据其类型被设置为相应的默认初始值,然后调用构造方法,而每次调用构造方法都是要执行三个阶段: 1.调用超类的构造方法; 2.由初始化语句对给变量进行初始化...

    2019最新Java面试题,常见面试题及答案汇总说课材料.pdf

    13. **final修饰抽象类**:不合法,抽象类不能被声明为final。 14. **接口与抽象类的对比**:接口不包含实现,只能声明方法;抽象类可以有实现。一个类可以实现多个接口,但只能继承一个抽象类。 15. **IO流分类**...

    java基础学习词汇

    属性是指类的特征或状态,通常表现为类中的成员变量。属性可以是任何数据类型,如字符串、数字或其他对象。 #### Boolean (布尔) 布尔类型是一种基本数据类型,只有两个值:`true` 和 `false`。在Java中,布尔类型...

    IT java 面试题库

    为什么?** - 可以。Java中的`char`类型占用两个字节,可以用来表示Unicode字符集中的字符,包括汉字。 3. **Java的大数字类型有哪些?说说大数字类型如何做加减运算的,是用“+”“-”操作?** - Java的大数字...

    Java面试题.pdf

    - 接口则是一个完全抽象的类型,只能包含公有的抽象方法(默认为`public abstract`)、常量(`public static final`变量)和默认方法(Java 8引入)。接口用于定义行为规范,一个类可以实现多个接口,实现多继承。 ...

    原创毕业设计完工贴出来和大家分享一下吧-metro_simulation(Final).rar

    例如:simulink中某个变量为M,edit框的确Tag为name,那么相应的代码就是M=str2double);这里的str2double是将字符串转变为double型的双精度数。调用simulink前写上options = simset;再进行调用sim; 3、从excel中...

    J2EE面试题集锦

    抽象类中的成员变量默认为包访问级别,可以根据需要设置为 public、protected 或 private。 ##### 3. `Hashtable` 的原理及 `HashMap` 与 `Hashtable` 的区别 - **`Hashtable` 的原理**:通过节点的关键码确定节点...

    JAVA-SSH面试题

    封装通过类的私有成员变量和公有方法实现。 - **多态性** 多态性使不同类的对象能够对相同的接口作出响应。它可以分为**参数化多态性**和**包含多态性**。这种特性提高了代码的灵活性和复用性。 2. **String是否...

    java内存管理的小技巧

    为了减少内存消耗,可以通过`valueOf`方法来获取这两个预定义的实例,该方法的内部实现为: ```java public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); } ``` 这种方式可以有效避免重复...

    先锋无组件上传类(无惧2.0杜绝上传漏洞修改版) v2004

    用到的变量: filepath 默认值uploadface 属性hiden act 默认值upload 属性hiden file1 就是你要传的那个文件 关键是 filepath 这个变量! 默认情况下我们的文件上传到www.***.com/bbs/uploadface/ 文件是用...

Global site tag (gtag.js) - Google Analytics