`

关于final变量可以被修改

 
阅读更多

一个类的final变量也是可以通过反射,拿到这个变量,然后修改的。除非这个变量是static final的,可以通过代码验证。

分享到:
评论
1 楼 freish 2011-12-17  
通过反射设置final变量,再直接通过原来的对象.方法()获得的还是原来的值
通过反射得到的是修改的值,应该是存在某个临时的位置

相关推荐

    局部变量用final的讨论

    这是因为内部类可以访问外部类的final或effectively final变量,而这些变量被视为常量。 3. **代码优化**:JVM可能会对`final`局部变量进行优化,如逃逸分析,将它们存储在栈上而不是堆上,提高运行效率。 4. **...

    final变量.

    - **修饰方法**:`final`方法不能被子类覆盖,但可以被继承,这样可以确保特定方法的行为不会被子类改变,有助于保持代码的一致性。 - **修饰类**:`final`类不能被继承,从而保护了类的结构不被篡改,确保类的...

    final类,方法,变量

    `final`变量可以被视为常量,一旦赋值后就不能改变。对于类级别的`final`变量(静态常量),必须在声明时或者在类的静态初始化块中赋值。而对于实例级别的`final`变量,可以在构造器中赋值。如果一个`final`变量引用...

    Eclipse设置保存时自动给变量加final

    标题“Eclipse设置保存时自动给变量加final”涉及到的是在Eclipse集成开发环境中(IDE)进行代码风格和规范配置的技巧。Eclipse是一个广泛使用的Java IDE,它提供了丰富的功能和自定义选项,以满足不同开发者的需求...

    关于Final的用法

    `,其中的`A`对象仍然可以被内部修改,只是这个引用`a`不能再次指向其他对象。对于数组而言,`final int[] a = {1, 2, 3, 4, 5};`中数组的元素是可以更改的,但是`a`这个引用不能指向另一个数组。 ### 3. 修饰方法...

    关于Java中final的深度剖析.pdf

    final变量可以在编译时被初始化,也可以在运行时被初始化,但是一旦被初始化,final变量的值就不能被修改了。使用final变量可以提高代码的可读性和可维护性,因为它可以避免不必要的逻辑错误。 例如,在数学计算中...

    深入理解final变量的初始化

    这些变量一旦被初始化,就不能再更改其值。深入理解`final`变量的初始化至关重要,因为它涉及到程序的正确性和内存管理。以下是对`final`变量初始化的详细分析: 1. **定义时初始化**: `final`变量可以在定义时...

    Java中final的深度剖析

    在Java 8引入的lambda表达式中,final变量可以作为lambda的捕获变量,这保证了lambda表达式的封闭性,即它们不能修改外部的非final变量。 总结来说,final关键字在Java编程中扮演了多种角色,从确保常量的不变性,...

    java_中的_final_变量[文].pdf

    `final`关键字也可以修饰方法,这意味着该方法不能被子类覆盖,但仍然可以被继承。这在设计API时特别有用,确保某些核心功能不会被误修改。`final`方法在编译时可能会进行内联优化(inline),提高代码执行效率,...

    final和static用法详解JAVA

    final 关键字是 Java 中的一种访问修饰符,用于修饰类、方法和变量,以确保它们不能被修改或继承。下面是 final 关键字的详细解释: 1. final 类 final 类不能被继承,也就是说,final 类不能有子类。final 类中的...

    JavaSE之final关键字与成员变量的类型

    // 错误,final变量不能再次赋值 final Student stu1 = new Student("张"); // stu1 = new Student("程"); // 错误,final引用变量的地址值不能改变,但对象内容可以改变 // stu1.setName("程"); // 正确,对象...

    ClassFinal-java class文件安全加密工具

    处理后的class文件可以被正常的Java虚拟机(JVM)加载和执行,但对试图反编译或分析的人来说,会变得极其困难。此外,需要注意的是,加密和混淆虽然能增加安全性,但可能会影响程序的性能和调试便利性,因此在选择...

    Java关键字final、static使用总结

    final 方法不能被子类的方法覆盖,但可以被继承。使用 final 方法的原因有二:一是把方法锁定,防止任何继承类修改它的意义和实现;二是高效,编译器在遇到调用 final 方法时候会转入内嵌机制,大大提高执行效率。 ...

    Java中的final关键字

    - 在多线程环境下,`final`字段具有特殊的含义,它们可以被JVM保证初始化的安全性。一旦对象的构造完成,`final`字段的值就会被锁定,不会受到并发的影响。 7. **final和效率** - Java虚拟机(JVM)可以对`final`...

    Java中局部内部类可以访问它所在方法中定义的final修饰的局部变量的合理解释.doc

    在 Java 中,final 修饰的局部变量是一个常量,它的值不能被修改。因此,当我们将变量 b 声明为 final 时,JVM 会将其复制给局部内部类,以便在方法调用结束后,局部内部类仍然可以访问该变量。这个过程是透明的,对...

    final修饰类

    1. **final 常量**:当`final`修饰一个成员变量(属性)时,它就变成了一个常量,一旦赋值就不能再次更改。对于基本类型的变量,这意味着值不能改变。对于引用类型的变量,虽然引用本身不能改变,但引用的对象内部的...

    Java中final作用于变量、参数、方法及类该如何处理

    数组`a`虽然也是`final`的,但其元素可以被修改。`v2`和`VAL_3`都是不可变引用,它们不能指向新的对象,但对象的内部状态可以改变。 总结起来,`final`关键字在Java中提供了多种功能,包括常量定义、防止意外的值...

    Java中final变量使用总结

    1. **final变量的声明** - 对于基本类型变量,如`int`、`double`等,一旦赋值,其值就不能更改。 ```java final double PI = 3.14; ``` - 对于对象引用,`final`变量只能指向一个对象,但对象内部的状态(非`...

Global site tag (gtag.js) - Google Analytics