一些方法在运行时,它须要的数据不能任意的,而必须是必定范围内的值。好比,有如下需求:学生的考试成绩只能分为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);
}
}
|