gpt4 book ai didi

java - Comparable 和 Object 类型的区别

转载 作者:搜寻专家 更新时间:2023-11-01 02:25:52 25 4
gpt4 key购买 nike

目前正在进行一项作业,将Comparable 的概念应用到应用中。

我编写了这个允许输入 Comparable[] 数组的简单方法。此方法返回任何给定数组输入的最小值。使用 .compareTo() 方法,我能够真正扩展此方法以允许任何对象类型,无论它是自定义实现,如 Point 类(我们完成作业,但未在此处显示)。

public static Comparable getMinimum(Comparable[] inputArray)
{
Comparable newObj = inputArray[0];
for(int i = 0; i < inputArray.length; i++)
{
Integer retValue = (inputArray[i]).compareTo(newObj);
if(retValue < 0)
{
newObj = inputArray[i];
}
}
return newObj;
}

我的问题是 - 这个 Comparable 类型是什么?查看 Java API,它并没有真正透露太多。为什么我们使用 Comparable 类型而不是 Object 类型,后者还包括 intdouble 等类型, String, 等等?

最佳答案

可比较类型是一个引用类型,其类 C实现 Comparable<C>界面。该接口(interface)定义了一个方法:int compareTo(<T> other) .阅读 javadoc了解详情。

  • 基本类型(例如 intdouble )不是 Comparable在这个意义上,因为基本类型不是引用类型。

  • 类型Object是引用类型,但它不是可比较的,因为它没有实现 Comparable<Object> .

  • 类型String是引用类型,它实现了 Comparable<String> .因此它是一个可比较的类型。这从 String 的 javadoc 中可以清楚地看出:

    public final class String extends Object
    implements Serializable, Comparable<String>, CharSequence

primitive types之间的区别引用类型是 Java 的基础。原始类型是 boolean , byte , char , short , int , long , floatdouble .引用类型是 Java 类和 Java 数组类型。


现在在您的示例中,您实际上使用的是 Comparable接口(interface)作为原始类型。如果您使用 Java 5 或更高版本的编译器编译此代码,它将向您发出有关使用原始类型的编译器警告。这并没有实质性地改变答案,但实际上你现在正在有效地谈论实现 Comparable<?>相反 Comparable<T>该方法实际上是 compareTo(Object) .

关于java - Comparable 和 Object 类型的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23024879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com