【问题标题】:Return Type incompatible with Object.getClass()返回类型与 Object.getClass() 不兼容
【发布时间】:2016-05-28 20:45:28
【问题描述】:

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

【问题讨论】:

  • 请提供更多信息。 localClass 是什么?
  • 大家好,我尝试添加一个 final 关键字 public final.. 并且成功了。任何想法为什么我现在没有错误?
  • 我面临同样的错误,我添加了 final 它对我不起作用。有什么建议吗?

标签: java eclipse auto-generate


【解决方案1】:

我认为您的 Web 服务是作为 WSDL 文件提供的。从这个 WSDL 文件中会自动生成一些 Java 文件。显然,您的 WSDL 文件包含一个名为“class”的属性,因此相应生成的 Java 类有一个用于该属性的 getter,称为getClass()

但是,getClass() 是在Object 类中定义的方法,所有Java 类都继承自Object。 Java 认为你试图覆盖这个方法,这是不允许的,因为 1)方法是 final 的,2)返回类型不匹配。

您可能想查看this question 的答案,其中提到了如何重命名属性以使其 getter 不会与标准 Java 方法冲突。

【讨论】:

  • 这是我非常确切的问题。我会看看这个。
  • 那里不错。
【解决方案2】:

getClassObject 的最终方法,它返回Class。您收到该错误是因为编译器认为您正在尝试覆盖getClass,同时将返回类型更改为不是Class。如果要返回String,则需要将方法名称更改为其他名称或向方法添加参数,使其签名与Object#getClass 不匹配。请注意,即使您想返回 Class,也不能覆盖它,因为它是最终的。

【讨论】:

    【解决方案3】:

    其实我更喜欢:

    public final Class<? extends Object> getMyClass(){
        return localClass;
    }
    

    这是通用的。由于 Java 中的所有内容都继承自 Object,因此这与类路径中加载的所有内容相匹配。而且您可能遇到问题,因为您试图覆盖final 方法.getClass()(所以这里的名称改为getMyClass()

    .getClass()的javadoc可以看出:

    实际结果类型为Class&lt;? extends |X|&gt;,其中|X| 是调用getClass 的表达式的static 类型的擦除。

    【讨论】:

    • 我试过了,但错误是它无法将字符串转换为类。
    • 请发布更多代码,以便我们准确了解您如何使用此方法。用它编辑你的问题
    【解决方案4】:
     public  java.lang.String getClass(){
                  return localClass;
       }
    

    可以改变

     public  Class<?> getClass(){
                  return localClass;
     }
    

    但由于 getClass 是最终方法,因此不能被覆盖。如果您想要自己的方法,请考虑更改名称。

    【讨论】:

    • 我试过了,但错误是它无法将字符串转换为类。
    猜你喜欢
    • 2014-08-29
    • 2019-09-06
    • 2013-11-11
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 2021-04-15
    • 1970-01-01
    相关资源
    最近更新 更多