Effective Java(使可变性最小化)
2017-09-21 17:23
211 查看
使可变性最小化
首先来了解下什么是不可变的对象,最为常见的就是String类,这个类大家都清楚是不可变的,至于为什么在赋值过后还能对它进行赋值那是因为在常量池中又定义了一个常量使得引用指向了这个新的常量,而不是在原有值的基础上做修改。
对于final关键字,我想很多人对于它的用法基本上是处于以下用法:
private static final String NAME="LiSi";
把它和static关键字配合使用使得程序中不会出现硬编码,而是以常量的形式出现,这样也便于修改和阅读,但是final的功效远远不止于此。
以下是final的常见用法:
1、 用final关键字修饰类,使得该类不可以被继承。例如String类就利用final修改使得它不可以被继承。
2、 用final关键字修饰成员变量,使得该变量变为不可变的对象引用,此时应该给它赋初值,之后它不能被重新赋值,准确来讲是它的引用不可改变。注意是引用不可改变,不代表被引用的对象内部不能改变,如果引用的对象本身是一个引用类型例如:
private Student stu = new Student();
stu.setName(“kevin”);
stu.setName(“ylf”); //这是合法的
//stu = new Student(); //这不合法,因为它改变了stu的引用
3、 比较通用的就是开篇提到的和static配合使用定义常量。
首先来了解下什么是不可变的对象,最为常见的就是String类,这个类大家都清楚是不可变的,至于为什么在赋值过后还能对它进行赋值那是因为在常量池中又定义了一个常量使得引用指向了这个新的常量,而不是在原有值的基础上做修改。
对于final关键字,我想很多人对于它的用法基本上是处于以下用法:
private static final String NAME="LiSi";
把它和static关键字配合使用使得程序中不会出现硬编码,而是以常量的形式出现,这样也便于修改和阅读,但是final的功效远远不止于此。
以下是final的常见用法:
1、 用final关键字修饰类,使得该类不可以被继承。例如String类就利用final修改使得它不可以被继承。
2、 用final关键字修饰成员变量,使得该变量变为不可变的对象引用,此时应该给它赋初值,之后它不能被重新赋值,准确来讲是它的引用不可改变。注意是引用不可改变,不代表被引用的对象内部不能改变,如果引用的对象本身是一个引用类型例如:
private Student stu = new Student();
stu.setName(“kevin”);
stu.setName(“ylf”); //这是合法的
//stu = new Student(); //这不合法,因为它改变了stu的引用
3、 比较通用的就是开篇提到的和static配合使用定义常量。
相关文章推荐
- Effective Java(使可变性最小化)
- 【Effective Java】Ch4_Class:Item15_使可变性最小化
- 《Effective java》读书记录-第15条-使可变性最小化
- Effective Java 3rd 条目17 最小化可变性
- Effective Java 第十五条:使可变性最小化
- Effective Java 读书笔记——15:使可变性最小化
- Effective Java(使可变性最小化)
- Effective Java(使可变性最小化)
- Effective Java 第 15 条: 使可变性最小化
- Effective Java(使可变性最小化)
- Effective Java(使可变性最小化)
- Effective Java(使可变性最小化)
- Effective Java(使可变性最小化)
- Effective Java(使可变性最小化)
- Effective Java(使可变性最小化)
- effective java(15) 之使可变性最小化
- Effective Java(使可变性最小化)
- Effective Java 第三版——17. 最小化可变性
- Effective Java(使可变性最小化)
- 使可变性最小化。