Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
避免返回Java.lang.Object,而是将其转换为特定类型_Java - Fatal编程技术网

避免返回Java.lang.Object,而是将其转换为特定类型

避免返回Java.lang.Object,而是将其转换为特定类型,java,Java,对于大学项目,我必须修复软件的维护。Kiuwan报告问题“避免返回Java.lang.Object,而是将其转换为特定类型。”在许多方法上,为了解决所有问题,我应该从头到脚重新设计软件! 有没有办法绕过Kiuwan“解决”这个问题? 这是修复方法的一个示例: public Object popupMenu(Object component) { return ThinletLayoutInterface.popupMenu(component, this); } 我真的不知道Thinl

对于大学项目,我必须修复软件的维护。Kiuwan报告问题“避免返回Java.lang.Object,而是将其转换为特定类型。”在许多方法上,为了解决所有问题,我应该从头到脚重新设计软件! 有没有办法绕过Kiuwan“解决”这个问题? 这是修复方法的一个示例:

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);