Java 为什么有时在使用Comparable或其他接口时,我必须清除尖括号中的类类型?;

Java 为什么有时在使用Comparable或其他接口时,我必须清除尖括号中的类类型?;,java,interface,Java,Interface,例如: public class Test implements Comparable<String>{ @Override public int compareTo(String o) { return 0; } } 公共类测试实现了可比较的{ @凌驾 公共整数比较(字符串o){ 返回0; } } 我是java初学者,遇到了一些麻烦 现在我有了一个compareTo()方法重写,它来自测试类中的Comparable接口。我想知道我是否可

例如:

public class Test implements Comparable<String>{

    @Override
    public int compareTo(String o) {
        return 0;
    }
}
公共类测试实现了可比较的{
@凌驾
公共整数比较(字符串o){
返回0;
}
}
我是java初学者,遇到了一些麻烦


现在我有了一个compareTo()方法重写,它来自测试类中的Comparable接口。我想知道我是否可以在这个方法中声明一个字符串类型的参数o,为什么我必须声明
公共类测试实现Comparable
,而不是
公共类测试实现Comparable
。换句话说,编译器会给我一个错误,除非我在
Comparable
之后用尖括号声明确切的数据类型。那么尖括号中的数据类型做了什么?为什么我必须首先声明它,而不是在
compareTo()
方法中使用它?

可比
接口的主要目的是对某个类的对象施加总的排序

从这个角度来看,将“特定类”指定为
compariable
接口本身的类型参数是有意义的


因此,作为界面的用户,您必须提供类型参数。

您的意思是“为什么我必须编写
?”请澄清您的问题?“toString方法的参数”?什么意思?我所知道的唯一常见的
toString
方法是
toString()
——没有参数。你肯定应该这样做。而且声明一个实现Comparable的测试类是毫无意义的。使其具有可比性是有意义的。对不起,这是比较,这是笔误