当前位置: 首页 > 知识库问答 >
问题:

带有泛型参数的compareTo正在发出警告

时修贤
2023-03-14
private boolean less(Comparable<T> u, Comparable<T> v) {
    return u.compareTo(v) < 0;
}
private boolean less(Comparable<T> u, Comparable<T> v) {
    return u.compareTo((T) v) < 0;
}

共有1个答案

姜华翰
2023-03-14

初始错误是正确的,警告正确到:你的把戏非常不安全:你不能把v转换成T。

因为您的方法使用参数u和v,所以每个参数都是一个类的实例,它实现了compareTo(T的某个实例)。

准确地说:u可以和T比较,v可以和T比较。

private static <X> boolean less(Comparable<X> u, X v)
    {
    return u.compareTo(v) < 0;
    }
 类似资料:
  • 问题内容: 在C#中,我实际上可以这样做: 但是由于某种原因,我无法使其在Java中工作。 我要做的是在超类上创建一个静态方法,以便可以将子类转换为XML。 问题答案: 称为: 或更明确地: 更令人困惑的是,您可以拥有既构造泛型类型又具有泛型参数的构造函数。不记得该语法,也从未在愤怒中使用过它(无论如何,最好还是使用静态创建方法)。 强制转换是不安全的,并且您不能编写T.class。因此,将T.c

  • 本页包含内容: 泛型形参子句 泛型实参子句 本节涉及泛型类型、泛型函数以及泛型构造器的参数,包括形参和实参。声明泛型类型、函数或构造器时,须指定相应的类型参数。类型参数相当于一个占位符,当实例化泛型类型、调用泛型函数或泛型构造器时,就用具体的类型实参替代之。 关于 Swift 语言的泛型概述,见泛型(第二部分第22章)。 泛型形参子句 泛型形参子句指定泛型类型或函数的类型形参,以及这些参数的关联约

  • 我开始使用Kotlin,我定义了如下界面: 当我尝试在代码上使用它时: 我得到了一个错误,投影类型是“A适配器” 我想在定义中加上“in”或“out”,但我感到困惑。 如何允许它。

  • 我面临一个java泛型的问题,我的计划是实现一个二叉查找树(key 中的if语句不被接受,我认为这是因为我重写了comareTo,但是我应该如何比较泛型? 还尝试了而不是,结果相同。 最好的问候 编辑:编译器说:在这一行的多个标记-比较类型中的方法comareTo(捕获#1-of?)不适用于参数(可比)-行断点: KeyValPair[line: 39]-comareTo(KeyValPair)

  • 问题内容: 我想知道是否有可能编写一个接受多种通用类型的函数,如下所示: 那行得通吗?每个参数中的泛型是否意味着每个参数必须具有与泛型相同的类型T? 问题答案: 是的-可能的(虽然不是使用方法签名),是的,使用签名的类型必须相同。 使用给定的签名,必须在呼叫站点将其与单个类型(例如 或 )相关联。但是,您可以声明采用多个类型参数的方法签名 请注意,在上面的签名中,我已经声明了类型以及签名本身。因此

  • 问题是: 创建一个名为Duo的泛型类,它有两个参数a和B。声明一个名为a类型的第一个变量,以及一个名为B类型的第二个变量。创建一个接受这两个参数的构造函数。在构造函数中,将这些参数分别分配给声明的变量。 这是我能想到的解决方案: 然后,当我继续问下一个问题时,我被绊住了。问题是: 使用问题4中的Duo类声明并创建两个对象,如下所示: a) 第一个名为sideShape的对象分别由字符串类型和整数类