社区
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的呢?
...全文
296
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
关键字 作用:可以用于修饰类、方法和...
引用
类型的局部变量,被
final
修饰后,只能指向一个
对象
,地址不能再更改。但是不影响
对象
内部的成员变量值的 修改 被
final
修饰的常量名称,一般都有书写规范...
String类为什么是
final
类型?
String类为什么是
final
类型? 首先,先得清楚
final
这个关键字。
final
的出现就是为了为了不想改变,而不想改变的理由有两点:...如果有一个String的
引用
,它
引用
的一定是一个String
对象
,而不可能是其他类的
对象
。 Str
Java中的
final
关键字
目录 概述总结:修饰类:修饰方法:修饰变量:普通变量对值进行改变修饰
引用
对象
入理解
final
关键字1.类的
final
变量和普通变量有什么区别?2.被
final
修饰的
引用
变量指向的
对象
内容可变吗?3.
final
和static4.匿名内部...
Java SE
62,615
社区成员
307,307
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章