我这样做是为了我自己的理解,我不明白这个问题。
假设有一个名为与以下内容相当的界面 定义:
public interface Comparable {
int compareTo(Object obj);
}
你认为类String实现了Comparable接口吗?提供一个 你回答的原因。
我会说不,因为课堂上没有任何字符串,但我相信我误解了这个问题。有人可以更好地解释这个吗?
答案 0 :(得分:5)
您应该查看类String
的源代码或Java文档。它明确地实现了接口Comparator
。
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html
java.lang
类字符串
java.lang.Object中
java.lang.String
所有已实施的接口:
Serializable,CharSequence,可比较<字符串>
答案 1 :(得分:2)
我打算给你一些关于这个问题的观点,我想说不,它没有。
从Java 6开始,java.lang.String无法实现该接口,因为它与Comparable<String>
不兼容,而Comparable
与Comparable<String>
不同。不同之处在于无法将String
与Object
进行比较
答案 2 :(得分:1)
String实现Comparable。
Why it does so?
因此可以使用compareTo方法对字符串进行排序。 例如,您希望根据员工的姓名对员工进行排序,名称为字符串,因此您可以将其用作: -
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class Employee implements Comparable {
String name;
public Employee(String name) {
this.name = name;
}
public int compareTo(Object o) {
Employee employeeAnother = (Employee) o;
// natural alphabetical ordering by type
// if equal returns 0, if greater returns +ve int,
// if less returns -ve int
return this.name.compareTo(employeeAnother.name);// String compareTo is
// called here
}
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Employee("Ramesh"));
list.add(new Employee("Deepak"));
list.add(new Employee("Vivek"));
Collections.sort(list); // sorts using compareTo method
for (Iterator iter = list.iterator(); iter.hasNext();) {
Employee employee = (Employee) iter.next();
System.out.println(employee);
}
}
public String toString() {
return name;
}
}
我没有使用泛型来保持简单。您将收到一些警告,但您可以忽略这些警告。
答案 3 :(得分:0)
如果要检查给定的类是否实现某些接口或其他类,可以使用instanceof
:
System.out.println("string" instanceof Comparable);
您也可以尝试从给定的接口执行方法:
"one".compareTo("two")
在这种情况下,您的代码将被编译或显示相应的错误消息。
但最好的方法是阅读给定类的源代码。在这种情况下,您不必编写任何其他代码。此外,一个好的IDE(如Eclipse,Intellij Idea)可以帮助找到答案。
答案 4 :(得分:0)
是的! 在Java 8中;打开Java文档,您将找到以下内容:
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence