社区
Java SE
帖子详情
如何保证引用到的对象是final的?
Andy84920
2007-01-17 10:23:48
final StringBuffer sb = new StringBuffer();
final StringBuffer tmp = new StringBuffer();
sb = tmp; //error
sb.append(tmp); //ok
可以看到sb本身是final的,但sb所引用到的对象是可以进行append操作的,是可以改变的。如何保证sb引用到的对象是final的呢?
...全文
326
4
打赏
收藏
如何保证引用到的对象是final的?
final StringBuffer sb = new StringBuffer(); final StringBuffer tmp = new StringBuffer(); sb = tmp; //error sb.append(tmp); //ok 可以看到sb本身是final的,但sb所引用到的对象是可以进行append操作的,是可以改变的。如何保证sb引用到的对象是final的呢?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xoele
2007-01-18
打赏
举报
回复
这个也是没有办法的啊 ,因为 Java 里面所有东西都是指针,
要不你自己写个类,只读的,不让别人改,那不就是彻底的final了吗
luyang1016
2007-01-18
打赏
举报
回复
再补充以下:
public static final String str = "abc";
str = "def"; // 出错。
str 就是final的。
先在栈中创建一个对String类的对象引用变量str,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str指向”abc”,
如果已经有”abc” 则直接令str指向“abc”。
接着又按照刚才的把"def"放进栈,将str指向"def".
但是由于 str 是 final, 指针变了, 所以错了
luyang1016
2007-01-18
打赏
举报
回复
相当于指针不能变,但指针所指的内容可变
===================================
精辟
believefym
2007-01-17
打赏
举报
回复
这个能保证?
final是说sb = tmp是不允许的,不是说引用的对象不可改变,相当于指针不能变,但指针所指的内容可变
被
final
修饰的变量到底能不能被修改
final
:可以修饰类,方法,变量; 对类的修饰:表示类不可以被继承; 对方法修饰:表示该方法不能被子类重写; 对变量修饰:表示该变量不能被修改; 不知道大家有没有遇到一些很奇怪的现象,就是被
final
修饰变量好像能被修改; ...
被
final
修饰的
对象
属性是否可以修改(转载)
其实看到这里,问题的答案已经很明显了。被
final
修饰的变量值是没有变的;被
final
修饰的model,存储的只是一个内存地址,setId只是通过
引用
地址找到model实例数据,修改了model
对象
的实例数据;而model存储的值(指向
对象
的指针)并没有变,疑惑解除~;版权声明:本文为CSDN博主「狂奔的蜗牛已被占用」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
final
修饰基本类型变量和
引用
变量区别
一 概念介绍 1 当使用
final
修饰基本数据类型时,不能对其重新赋值,不能被改变。 2 当使用
final
修饰
引用
类型变量时,它仅仅
保证
他的地址不变,即一直
引用
同一个
对象
,但这个
对象
完全可以发生改变。 二
final
修饰
引用
类型变量应用 1 代码示例 import java.util.*; class Person { private int age; public
java 安全发布
对象
_关于java:Volatile
保证
可变
对象
的安全发布?
通过在实践中阅读Java并发我可以看到:为了安全地发布
对象
,必须同时使对该
对象
的
引用
和该
对象
的状态对其他线程可见。可以通过以下方式安全地发布正确构造的
对象
:从静态初始化器初始化
对象
引用
将对它的
引用
存储到volatile字段或AtomicReference中将对其的
引用
存储到正确构造的
对象
的最终字段中将对它的
引用
存储到由锁。但是,我对第二种成语感到困惑。因为volatile只能
保证
该
引用
对另一个线程...
Java 中的
final
关键字是否能
保证
变量的可见性?
是否能
保证
变量的可见性”,需要结合 Java 内存模型(JMM)的规则和具体使用场景来分析。关键字在
对象
构造完成后能
保证
字段的可见性,但仅限于初始值,且需避免构造逃逸。和锁配合使用,才能全面解决并发可见性问题,是 Java 并发编程中的重要特性。关键字在特定情况下可以
保证
变量的可见性,但其主要作用是确保变量的。的可见性由 JMM 的
final
字段规则定义。,而不是直接提供所有场景下的可见性保障。的写 happens-before 构造完成。提供构造时的可见性和有序性。禁止构造期间的重排。
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章