final修饰符大都用于基本类型,或不可变类的域(如果类中的每个方法都不会改变其对象,这种类就是不可变的类。例如,String类就是一个不可变的类)。对于可变的类使用final修饰符可能会对读者造成混乱。例如,private final Date hiredate;
仅仅意味着存储在hiredate变量中的对象引用在对象构造之后不能被改变,而不意味着hiredate对象是一个常量。任何方法都可以对hiredate引用的对象调用setTime更改器。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| package per.alvin.demos;
public class User {
private String name;
private int age;
public User(){
}
public User(String name, int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| package per.alvin.demos;
public class Item {
private final User user;
public Item(User user){
this.user = user;
}
public User getUser() {
return user;
}
public static void main(String [] arags){
User alvin = new User("alvin", 22);
Item item = new Item(alvin);
System.out.println(item.getUser().getName());
alvin.setName("nathan");
System.out.println(item.getUser().getName());
}
}
|