gpt4 book ai didi

java - 为什么 Java equals(Object O) 方法没有可以将特定对象类型(例如字符串、整数等)作为输入的变体?

转载 作者:行者123 更新时间:2023-11-29 10:11:53 24 4
gpt4 key购买 nike

我遇到了需要使用 Java 语言比较两个字符串(或任何其他对象)是否相等的问题。String Object 上有两种方法对此非常有用,即。 compareTo(Object O),它返回一个整数比较结果,而其他equals(Object o),它返回一个 boolean 值。我的问题是,虽然 compareTo() 有一个变体,它将特定字符串而不是通用对象作为输入,但为什么 equals() 没有这样的变体?我经常遇到的一个问题是,当我在对象上调用 equals 方法并将通用对象作为参数传递时,它不会抛出任何编译错误。考虑下面的代码片段(这不是现实生活中的例子,但我写这些只是为了阐明我的观点)。

String testStr = new String("1");
Integer testInt = new Integer(1);

testStr.compareTo(testInt.toString()); // compiles
testStr.equals(testInt.toString()); // compiles

testStr.equals(testInt); // compiles and will be always false
testStr.compareTo(testInt); // doesn't compile

最佳答案

因为 equals()Object 中声明和 compareTo(T foo)Comparable<T> 中定义.

在泛型之前,问题与 Comparable 相同, compareTo采用 Object 参数,但由于没有“Equalable”接口(interface),因此没有地方放置通用参数。

关于java - 为什么 Java equals(Object O) 方法没有可以将特定对象类型(例如字符串、整数等)作为输入的变体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30749285/

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