该对象是哪个扩展类?
假设我有一个 User 对象数组,其中每个对象实际上是扩展 User 的两个类之一。 ComputerUser
和 HumanUser
都扩展了 User
。
假设我正在遍历列表,并且每个对象在使用时都被命名为 o
。
我可以通过这样的比较来确定 o
是 ComputerUser
还是 HumanUser
吗:
if(o.getClass().equals(ComputerUser.class)) {}
else if(o.getClass().equals(HumanUser.class)) {}
Assuming I have an array of User
objects where each object is actually one of two classes that extends User
. ComputerUser
and HumanUser
both extend User
.
Assume I'm iterating through the list and each object is named o
when I am using it.
Can I figure out if o
is a ComputerUser
or HumanUser
simply by comparing like this:
if(o.getClass().equals(ComputerUser.class)) {}
else if(o.getClass().equals(HumanUser.class)) {}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用instanceof运算符:
尽管这被认为是面向对象编程的不良使用。另一种方法是利用多态性并定义适合 ComputerUser 与 HumanUser 的行为,如下所示:
You can use the instanceof operator :
though this is considered poor use of object oriented programming. An alternative is to leverage polymorphism and define the behavior appropriate to a ComputerUser vs a HumanUser as such :
ETC
etc