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

时间:2016-02-17 08:48:47

标签: java eclipse auto-generate

在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!!");
                                        }

4 个答案:

答案 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)

getClassObject的最终方法,返回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类型的擦除。