一些方法在運行時,它須要的數據不能任意的,而必須是必定範圍內的值。好比,有如下需求:學生的考試成績只能分爲A B C D E五個等級,不能是其餘的等級java
2、實現
app
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
class
Student {
private
String name;
//姓名
private
String grade;
//成績:A B C D E
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
String getGrade() {
return
grade;
}
public
void
setGrade(String grade) {
//若是賦值不在這些等級內,則拋出異常
if
(!grade.matches(
"[ABCDE]"
)){
throw
new
RuntimeException(
"不支持此參數!"
);
}
this
.grade = grade;
}
}
|
1
2
3
4
5
6
|
public
class
StudentTest {
public
static
void
main(String[] args) {
Student student =
new
Student();
student.setGrade(
"X"
);
}
}
|
把這個類的全部可能實例都使用 public static final 修飾ide
須要private 將構造器隱藏起來this
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public
class
Grade {
public
static final
Grade A=
new
Grade(
"A"
);
public
static final
Grade B=
new
Grade(
"B"
);
public
static final
Grade C=
new
Grade(
"C"
);
public
static final
Grade D=
new
Grade(
"D"
);
public
static final
Grade E=
new
Grade(
"E"
);
private
String value;
private
Grade(String value){
this
.value = value;
}
public
String getValue() {
return
value;
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public
class
Student {
private
String name;
//姓名
private
Grade grade;
//成績:A B C D E
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
Grade getGrade() {
return
grade;
}
public
void
setGrade(Grade grade) {
this
.grade = grade;
}
}
|
1
2
3
4
5
6
|
public
class
StudentTest {
public
static
void
main(String[] args) {
Student student =
new
Student();
student.setGrade(Grade.A);
}
}
|