你认为类字符串在Java中实现了可比较的接口吗?

时间:2015-08-10 09:16:11

标签: java class interface

我这样做是为了我自己的理解,我不明白这个问题。

  

假设有一个名为与以下内容相当的界面   定义:

public interface Comparable { 
        int compareTo(Object obj);
     }
  

你认为类String实现了Comparable接口吗?提供一个   你回答的原因。

我会说不,因为课堂上没有任何字符串,但我相信我误解了这个问题。有人可以更好地解释这个吗?

5 个答案:

答案 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>不兼容,而ComparableComparable<String>不同。不同之处在于无法StringObject进行比较

答案 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