为什么以下看起来比旧的铸造方式更好?
MyObj obj = someService.find(MyObj.class, "someId");
与
MyObj obj = (MyObj) someService.find("someId");
无法保证非泛型版本将返回"MyObj"类型的对象,因此您可能会获得ClassCastException.
在案例1中,最完善的服务来实现将能够返回null,如果有ID为没有对象someId
类型的MyObj
可以找到.此外,第一种情况下,能够对服务有一些特定的逻辑特定与类型的类工作MyObj
.
在第二种情况下,除非你使用的instanceof(避免可能的话),那么你冒着丑ClassCastException
,你将不得不捕获并处理.