[英]Return Type incompatible with Object.getClass()
该代码是在Eclipse上导入Web服务文件时生成的。 但是,我在编译时看到此错误(返回类型与Object.getClass()
不兼容)。
有任何解决办法吗?
public java.lang.String getClass(){
return localClass;
}
添加在:
if (localClass != null){
elementList.add(org.apache.axis2.databinding.utils.ConverterUtil.convertToString(localClass));
} else {
throw new org.apache.axis2.databinding.ADBException("Class cannot be null!!");
}
我认为您的Web服务以WSDL文件形式给出。 从此WSDL文件自动生成一些Java文件。 显然,您的WSDL文件包含一个名为“ class”的属性,因此,相应的生成的Java类对该属性具有名为getClass()
的吸气剂。
但是, getClass()
是在Object
类中定义的方法,所有Java类都从Object
继承。 Java认为您正在尝试覆盖此方法。这是不允许的,因为1)该方法是最终方法,而2)返回类型不匹配。
您可能想看看这个问题的答案,其中提到了如何重命名该属性,以便其getter与标准Java方法不冲突。
getClass
是Object
的最终方法,该方法返回Class
。 之所以会出现此错误,是因为编译器认为您正在尝试重写getClass
同时将返回类型更改为非Class
。 如果要返回String
,则需要将方法名称更改为其他名称或向方法添加参数,以使其签名与Object#getClass
不匹配。 请注意,即使您想返回Class
,也无法覆盖它,因为它是最终的。
public java.lang.String getClass(){
return localClass;
}
可以用
public Class<?> getClass(){
return localClass;
}
但是由于getClass是最终方法,因此不能忽略它。 如果您想要自己的方法,请考虑更改名称。
我实际上更喜欢:
public final Class<? extends Object> getMyClass(){
return localClass;
}
这是通用的。 由于Java中的所有内容都继承自Object,因此它与加载在类路径上的所有内容匹配。 您可能会遇到问题,因为您正尝试覆盖final
方法.getClass()
(因此,此处的名称为getMyClass()
。
从.getClass()
的javadoc中,您可以看到:
实际的结果类型是
Class<? extends |X|>
Class<? extends |X|>
其中|X|
是擦除在其上调用getClass
的表达式的static
类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.