我想编写一些代码,可以在一个对象内的两种模式之间切换。
- 读取模式:userMode
- 读+写模式:adminMode
- userMode 应该只能读取我的 getter 方法。
- adminMode 应该能够调用 setter 和 getter 方法。
一些附加信息:
- 对象以只读模式提供
- 解锁操作应切换到读+写模式。
重要
编译器应在编译时检查对象的正确使用(取决于模式),即不是通过检查标志来检查。
<小时/>我已经非常努力地尝试了,但是如果没有任务中的 boolean 标志,我无法实现我的项目,所以请告诉我如何...
这是我不满意的女巫代码:
public class Person {
private String name;
private double salary;
private boolean isAdmin;
/*
* ...
*/
public Person(String name, double salary, boolean isAdmin) {
this.name = name;
this.salary = salary;
this.isAdmin = isAdmin;
}
public double getSalary() {
return this.salary;
}
public void setSalary(double salary) {
if (isAdmin) {
this.salary = salary;
}
}
public void enableAdminMode() {
isAdmin = true;
}
public void disableAdminMode() {
isAdmin = false;
}
}
最佳答案
创建一个不带setter的ReadOnlyPerson
,Person扩展了ReadOnlyPerson
。
然后通过 instanceof
检查该对象是否可写。
关于java - 安全使用元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45623572/