繁体   English   中英

返回类型与Object.getClass()不兼容

[英]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方法不冲突。

getClassObject的最终方法,该方法返回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM