黑马程序员技术交流社区
标题:
instanceof和反射判断
[打印本页]
作者:
张森
时间:
2013-1-29 12:47
标题:
instanceof和反射判断
请教下各位,判断某个对象是否属于某个类的实例可以用 instanceof关键字
obj instanceof Student
也可以用 obj.getClass.getName.equals(Object.class);
网上都说 尽量不要用 instanceof方式 ,因为instanceof属于硬编码,
但还是没搞懂究竟用instanceof不好在哪里
作者:
yong230
时间:
2013-1-29 12:57
在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。假设两种账单计算方法不同,而传入的Bill对象可能是两种中的任何一种,所以要用instanceof来判断:
public double calculate(Bill bill) {
if (bill instanceof PhoneBill) {
//计算电话账单
}
if (bill instanceof GasBill) {
//计算燃气账单
}
...
}
这样就可以用一个方法处理两种子类。
然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:
public double calculate(PhoneBill bill) {
//计算电话账单
}
public double calculate(GasBill bill) {
//计算燃气账单
}
所以,使用instanceof在绝大多数情况下并不是推荐的做法,应当好好利用多态。
作者:
张森
时间:
2013-1-29 13:22
yong230 发表于 2013-1-29 12:57
在处理程序里有一个方法,接受一个Bill类型的对象,计算金额。假设两种账单计算方法不同,而传入的Bill对象 ...
貌似 你回答的跟我说那个没任何关系哦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2