【发布时间】:2019-10-12 00:13:11
【问题描述】:
所以我的教授给了我一个这样的 UML。前几天我和一个朋友聊天,他说使用 instanceOf 是一种不好的做法。
在这个例子中,如何避免使用它?
在方法 modify 中,我必须使用 instanceOf 来检查我是否有教授或学生的实例,然后我进行切换以修改对象的每个属性。
他还告诉我在类部门实现接口没有意义..应该在类Person..中实现它..
任何有关如何改进此练习的帮助或指导都会很棒!
public interface Iactions{
void add(Object o);
void delete(Object o);
void modify(Object o);
void show(Object o);
}
public class Department implement Iactions{
// Attributes
ArrayList<Person> myGroupPersons;
// Implementing the methods from interface Iactions
@Override
public void modify(Object o) {
if (o instanceof Professor) {
modifyProfessor((Professor) o);
} else if (o instanceof Student) {
modifyStudent((Student) o);
}
}
}
public class Person {
// code
}
public class Profesor extends Person{
// code
}
public class Student extends Person{
// code
}
抱歉信息不足: 添加和删除,一种插入对象并从arrayList中删除对象的方法。 对于 show ,我认为只是 arrayList 的打印。 并且修改,我需要有一个菜单,我可以在其中选择我想要修改的对象的哪些属性。
这是我的猜测,因为他只给了我们 UML(我没有写这个 uml)而且他没有说其他任何东西。
【问题讨论】:
-
注意是
implements,而不是implement -
能否解释一下增删改查的方法规范?添加和删除可能是可以猜到的;我假设它们的意思是“将给定的对象添加到这个容器/从这个容器中删除”。不过,我不确定 show 和 modify 应该做什么。
-
您是获得您在上面发布的
Iactions界面还是您自己编写的?它将帮助我们帮助您。根据你所说的教授要求你做的事情,听起来Person应该实现那个接口,每个人都应该做add(department)、delete(department)、modify(person)和show(null),但实际上,有一个很多我们不知道,即使我的猜测是正确的,它也不是一个易于使用的模型恕我直言。 :) -
使用
instanceof并不比使用Java 的其他特性更糟糕。关键是在有意义的时候使用这些功能。使用instanceof最常用于覆盖接受 Object 类型参数的 equals。
标签: java interface instanceof