避免返回Java.lang.Object,而是将其转换为特定类型
对于大学项目,我必须修复软件的维护。Kiuwan报告问题“避免返回Java.lang.Object,而是将其转换为特定类型。”在许多方法上,为了解决所有问题,我应该从头到脚重新设计软件! 有没有办法绕过Kiuwan“解决”这个问题? 这是修复方法的一个示例:避免返回Java.lang.Object,而是将其转换为特定类型,java,Java,对于大学项目,我必须修复软件的维护。Kiuwan报告问题“避免返回Java.lang.Object,而是将其转换为特定类型。”在许多方法上,为了解决所有问题,我应该从头到脚重新设计软件! 有没有办法绕过Kiuwan“解决”这个问题? 这是修复方法的一个示例: public Object popupMenu(Object component) { return ThinletLayoutInterface.popupMenu(component, this); } 我真的不知道Thinl
public Object popupMenu(Object component) {
return ThinletLayoutInterface.popupMenu(component, this);
}
我真的不知道ThinlayoutInterface做什么。但是,如果你在每次调用这个方法时都绝对知道你希望得到的类型,那么你就可以用一些粗鲁的手段作弊,然后去做
public <T> T popupMenu(Class<T> cls, Object component) {
return (T) ThinletLayoutInterface.popupMenu(component, this);
}
这将所有类型安全的负担都推到了调用者身上,正如我所说的,这确实是一个骗局。我不理解这个问题。只需将返回类型更改为您想要返回的类型?您是否理解
公共对象弹出菜单(对象组件)
的每个部分的含义?如果不是的话,那应该是你的问题(你可能应该先去谷歌或教科书)。另一方面,如果出于某种原因,您不能将返回类型更改为所需的类型,您应该对此进行详细说明,并提供一个.Kiuwan分析器警告我“避免返回Java.lang.Object”问题,因此维护值较低。现在,我不能将所有方法的签名作为一种返回对象进行更改,因为重新设计系统会花费我的成本。如果你需要重新设计系统以避免返回对象,那就指向一个设计糟糕的系统,而这个系统很可能需要重新设计。不,继承不是这样工作的-对象是所有类继承自的唯一类,不能用另一个也适用于所有类型对象的类替换它。
Widget w = populateMenu(Widget.class, myComponent);