在eclipse上导入webservice文件时生成代码。但是,我在编译时看到了这个错误(返回类型与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!!");
}
答案 0 :(得分:3)
我认为你的web服务是作为WSDL文件提供的。从这个WSDL文件中自动生成一些Java文件。显然,您的WSDL文件包含一个名为“class”的属性,因此相应生成的Java类具有一个名为getClass()
的属性的getter。
但是,getClass()
是一个在Object
类中定义的方法,所有Java类都继承自Object
。 Java认为你试图覆盖这个方法。这是不允许的,因为1)方法是final,2)返回类型不匹配。
您可能希望查看this question的答案,其中提到了如何重命名该属性以使其getter与标准Java方法不冲突。
答案 1 :(得分:1)
getClass
是Object
的最终方法,返回Class
。您收到该错误是因为编译器认为您在将返回类型更改为非getClass
的情况时尝试覆盖Class
。如果要返回String
,则需要将方法名称更改为其他名称或向方法添加参数,以使其签名与Object#getClass
不匹配。请注意,即使您想要返回Class
,也无法覆盖它,因为它是最终的。
答案 2 :(得分:0)
public java.lang.String getClass(){
return localClass;
}
可以用
更改 public Class<?> getClass(){
return localClass;
}
但是因为getClass是final方法,所以不能覆盖它。如果您想要自己的方法,请考虑更改名称。
答案 3 :(得分:0)
我真的更喜欢:
public final Class<? extends Object> getMyClass(){
return localClass;
}
哪个是通用的。由于Java中的所有内容都继承自Object,因此它会匹配类路径中加载的所有内容。您可能遇到问题,因为您试图覆盖final
方法.getClass()
(因此此处的名称为getMyClass()
。
从.getClass()
的javadoc可以看出:
实际结果类型为
Class<? extends |X|>
,其中|X|
是要调用static
的表达式的getClass
类型的擦除。