`

关于final变量可以被修改

 
阅读更多

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

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

相关推荐

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

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

    javafinal和static总结.docx

    静态方法是属于类的方法,而不是实例方法,静态方法可以被类本身调用,不需要实例化对象。 例如: `public static void myStaticMethod() { ... }` 注意:在 Java 中,final 和 static 关键字可以组合使用,例如...

    static、this、super、final的JAVA用法

    final 变量一旦被初始化后不能被修改,final 方法不能被重写,final 类不能被继承,例如: public class FinalTest{ public static void main(String[] args){ final int x = 10; // x = 20; // 不能修改 final ...

    final、fianlly、finalize区别

    方法声明为 final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时 给定初值, 而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用, 不能重载。 finally:再异常处理时...

    Java反射如何修改private final成员变量值

    主要介绍了Java反射如何修改private final成员变量值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    day10-final、接口、多态.pdf

    对于引用类型的变量,虽然不能更改其地址,但可以修改对象内部的成员变量值。 成员变量的 final 修饰必须在创建对象之前赋值,方式有两种:显示初始化和构造方法初始化。常量名称一般都用大写字母。 其次,接口是 ...

    《shell十三问》及《变量替换之 Final 版》

    NULL 博文链接:https://hegz.iteye.com/blog/629719

    Java中的final关键字详解及实例

    这是final的主要用途之一,和C/C++的const,即该成员被修饰为常量,意味着不可修改。   上面的代码对age进行初始化后就不可再次赋值,否则编译时会报类似上图的错误。 如果修饰的是引用类型的变量,那么初始化...

    编译器说 Lambda 表达式中的变量必须是 final 的,我偏不信

    偶尔,我们需要在 Lambda 表达式中修改变量的值,但如果直接尝试修改的话,编译器不会视而不见听而不闻,它会警告我们说:“variable used in lambda expression should be final or effectively final”。...

    关于Final关键字和不变性的深入理解

    人已走 车未动 心已动 身未起 若有所思 茫然无措 文章目录什么是不变性...被final修饰的变量,意味着值不能被修改。如果变量是对象,那么对象的引用不能变,但是对象自身的内容依然可以变化。 属性被声明为final后,该

    麻省理工18年春软件构造课程阅读11-抽象函数与表示不变量-1

    在给定的代码中,我们可以看到一些bug的例子,例如在`Tweet`类中,`author`成员变量可以被修改,这可能会导致bug的出现。 因此,在软件构造中,我们需要使用一些技术来检测和消除bug,例如单元测试、整合测试和调试...

    Java并发学习-AtomicIntegerFieldUpdater字段原子更新类.docx

    只能是可修改变量,不能使final变量,因为final的语义就是不可修改。 对于AtomicIntegerFieldUpdater和AtomicLongFieldUpdater只能修改int/long类型的字段,不能修改其包装类型(Integer/Long)。如果要修改包装...

    java面试经典试题

    第一,谈谈final, ...将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

    程序员面试题九阴真经

    程序员面试之九阴真经 ...将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重写

    32个经典的Java面试笔试题.txt

    这些问题在ebay面试的时候...2.变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定 初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载

    Java经典试题及答案.doc

    将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 ...

    java继承详解

    1、 被final修饰的成员变量,一旦赋值就不能被修改。那么这种变量我们称之为常量: 常量的定义格式: public static final 数据类型 变量名 定义常量的时候,常量的名字要大写,如果存在两个单词组合起来的名字,要...

    面试整理资料

    将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally?再异常处理时提供...

    JavaJ2EE笔试题

    将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally—在异常处理时...

    针对Java中的修饰符总结

    方法可以被重写的只有public和protected修饰的方法。default包访问权限,在不同包下子类重写不了。private修饰的方法子类虽然继承了,但是访问不到,所以也是不能重写。抽象方法不能被final、static修饰。final修饰...

Global site tag (gtag.js) - Google Analytics