【发布时间】:2013-10-17 07:17:11
【问题描述】:
我有以下三个课程。
SuperClass.java
SubClass1 extends SuperClass
SubClass2 extends SuperClass
我有一个方法可以接受SuperClass 类型的方法参数。
getResult(SuperClass request){
//Here the request can be of SubClass1 type or SubClass2 type.
}
这里的request 可以是SubClass1 类型或SubClass2 类型。
在getResult() 方法中基于请求类型我需要做一些逻辑。
要找出类型,我可以使用instanceof 运算符,如下所示。
if(request instanceof SubClass1){
//do something
}else if(request instanceof SubClass2){
//dosomething
}
有没有最好的方法来找出请求的类型?
谢谢!
【问题讨论】:
-
java中没有instance of,但是有instanceof
-
@javaBeginner 我编辑了我的问题..
-
最好的方法是不要使用 instanceof,因为它在大多数情况下指向设计异味。再次考虑您的设计。您提供的 sn-ps 数量不足以建议其他恕我直言。
-
@NarendraPathai,感谢您的回复。基本上我的超类将有一些共同的属性。我的想法不是有两个单独的方法来接受 subclass1 和 subclass2,而是计划使用带有超类类型参数的单个方法..
-
不鼓励使用 instanceof 的唯一原因是因为它表明未正确利用多态行为,并且有点像非 OO 编程。但这并不意味着您永远不必使用它,在某些情况下您可以使用它,请阅读@Jon Skeet 在stackoverflow.com/questions/7453288/…中的回答@
标签: java spring jakarta-ee