社区
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的呢?
...全文
302
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
作业
写回复
配置赞助广告
用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
关键字 作用:可以用于修饰类、方法和变量。 规则: 类:被修饰的类,不能被继承。 方法:被修饰的方法,不能被重写。 变量:被修饰的变量,不能被重新赋值 具体: 1、
final
修饰局部变量——基本类型 基本类型的局部变量,被
final
修饰后,只能赋值一次,不能再更改 2、
final
修饰局部变量——
引用
类型
引用
类型的局部变量,被
final
修饰后,只能指向一个
对象
,地址不能再更改。但是不影响
对象
内部的成员变量值的 修改 被
final
修饰的常量名称,一般都有书写规范...
String类为什么是
final
类型?
String类为什么是
final
类型? 首先,先得清楚
final
这个关键字。
final
的出现就是为了为了不想改变,而不想改变的理由有两点:设计(安全)或者效率。
final
修饰的类是不被能继承的,所以
final
修饰的类是不能被篡改的。 了解了这一点,我们再看看问题: 从设计安全上讲 确保它们不会在子类中改变语义。String类是
final
类,这意味着不允许任何人定义String的子类。 换言之, 如果有一个String的
引用
,它
引用
的一定是一个String
对象
,而不可能是其他类的
对象
。 Str
final
修饰的
对象
的初始化方式
final
修饰的
对象
的初始化方式 首先我们先了解
final
关键字的作用 -
final
修饰的类不能有子类,即不能被继承; -
final
修饰的
对象
的
引用
地址不能改变; -
final
修饰的
对象
的方法不能被重写; -
final
修饰的
对象
的变量会变成常亮,值不能被改变
final
修饰的
对象
的初始化方式分两种情况 第一种情况:
final
修饰的成员
对象
有三种初始化方式 1. 在定义变量时赋值 !...
Java中的
final
关键字
目录 概述总结:修饰类:修饰方法:修饰变量:普通变量对值进行改变修饰
引用
对象
入理解
final
关键字1.类的
final
变量和普通变量有什么区别?2.被
final
修饰的
引用
变量指向的
对象
内容可变吗?3.
final
和static4.匿名内部类中使用的外部局部变量为什么只能是
final
变量?5.关于
final
参数的问题
final
关键字,学过java的想必都不陌生,在使用匿名内部类的时候可能会经常用到
final
关键字。另外,Java中的String类就是一个
final
类,那么今天我们就来总结一下
final
这个关键字的
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章