当前位置: 首页 > 面试题库 >

找不到属于对象的方法

邢焱
2023-03-14
问题内容

我相信我犯了一个非常简单的错误/忽略了一些琐碎的事情。

import java.util.Comparator;

public class NaturalComparator<Integer> {

    public int compare(Integer o1, Integer o2) {
        return o1.intValue() - o2.intValue();
    }
}

编译时收到以下错误。

NaturalComparator.java:6: error: cannot find symbol
        return o1.intValue() - o2.intValue();
                 ^
  symbol:   method intValue()
  location: variable o1 of type Integer
  where Integer is a type-variable:
    Integer extends Object declared in class NaturalComparator
NaturalComparator.java:6: error: cannot find symbol
        return o1.intValue() - o2.intValue();
                                 ^
  symbol:   method intValue()
  location: variable o2 of type Integer
  where Integer is a type-variable:
    Integer extends Object declared in class NaturalComparator
2 errors

为什么我无法访问 Integer* 类中的 intValue() 方法? *


问题答案:

您正在使用决定命名的类型参数变量来遮盖该类型。java.lang.Integer``Integer

您的代码等同于

public class NaturalComparator<T> {

    public int compare(T o1, T o2) {
        return o1.intValue() - o2.intValue();
    }
}

显然不会编译,因为Object(的边界T)没有声明intValue()方法。

你想要的是

public class NaturalComparator implements Comparator<Integer> {

    @Override
    public int compare(Integer o1, Integer o2) {
        return o1.intValue() - o2.intValue();
    }
}

在这种情况下java.lang.Integer,用作类型参数。



 类似资料:
  • 本文向大家介绍关于vue中watch检测到不到对象属性的变化的解决方法,包括了关于vue中watch检测到不到对象属性的变化的解决方法的使用技巧和注意事项,需要的朋友参考一下 前言 在vue开发的过程中发现一个问题:改变vue.$data中对象的属性,watch是观测不到变化,但其实对象的属性是有变化的。这……,有点难以置信! 正文 如结果所示,option.age已经更新,但是watch中的op

  • 错误:(36,0)在org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler类型的对象上找不到参数[project“:model”]的方法api() 请帮帮我.

  • 我尝试获取下面的代码GetHttpACK。我试图重新同步项目但无济于事。 完整错误:在org . grad le . API . internal . artifacts . DSL . dependencies . defaultdependencyhandler类型的对象上找不到参数[目录' libs']的方法compile() 这是我的gradle文件 这是我的gradle应用程序文件。我已

  • 我有以下代码: 出于某种原因,当我对它运行等效的“Select Obejct”查询时,问题变得很清楚: 都是空的..谷歌说我需要使用“-ExpandProperty”标签来做这件事: 因此,我尝试对我的“Where Object”语句执行相同的操作: 它的错误是...因为该属性不存在。所以我需要找到一种不同的方法来完成这个任务,如何在不使用这个参数的情况下完成上面的代码呢?另外,为什么此参数存在于

  • 我对java“I get this error”不熟悉,找不到适合getText(String)方法JTextComponent的方法。getText(int,int)不适用(实际参数列表和形式参数列表长度不同)方法JTextComponent。getText()不适用 (Alt Enter显示提示)“当我试图运行我的程序时。请帮助。我做错了什么?

  • 我想允许用户上传两个图像,封面和徽标。然后将它们保存在fi恢复中。我在行中出错 找不到适用于into(Uri)方法RequestCreator的方法。into(目标)不适用(参数不匹配;Uri无法转换为目标)方法RequestCreator。into(ImageView)不适用(参数不匹配;Uri无法转换为ImageView)