<和>意味着什么,比如implements Comparable <BigInteger>?

ele*_*n81 6 java generics syntax comparable

的Java 1.4.2,类java.math.BigInteger实现接口Comparable,Serializable.

的Java 1.5.0,类java.math.BigInteger实现接口Serializable,Comparable<BigInteger>.

这只是一个例子,可以帮助我询问<>.什么我真的想知道是<>东西.

我的问题有三个:

  • 声明中的<BigInteger>部分implements是什么意思?
  • 这个语法叫什么?
  • 它做了什么?

PS:这真的很难给谷歌<>也不可能这么搜索<>摆在首位.

谢谢!

And*_*yle 19

阅读Java Generics Tutorial.尖括号之间的东西是一个类型参数 - Comparable是一个泛型类,在这种情况下,尖括号表示该类与其他BigIntegers相当.

有关这种情况的更多说明,请查看1.5中的ComparableJavadocs.请注意,它被声明为Comparable<T>,并且该compareTo方法采用类型的参数T.T是在使用接口时"填充"的类型参数.因此,在这种情况下,声明实现Comparable<BigInteger>意味着您必须拥有一个compareTo(BigInteger o)方法.另一个类可能实现了Comparable<String>必须实现compareTo(String o)方法的含义.

希望您能从上面的代码段中看到好处.在1.4中,签名compareTo只能采用一种,Object因为各种类都实现了Comparable,并且没有办法确切知道需要什么.但是,对于泛型,您可以指定您与特定类相比较,然后编写一个更具体的compareTo方法,该方法仅将该类作为参数.

这里的好处是双重的.首先,您不需要instanceof在方法的实现中进行检查和转换.其次,编译器可以在编译时进行更多的类型检查 - 您不能意外地将String传递给实现的东西Comparable<BigInteger>,因为类型不匹配.编译器能够指出这一点要好得多,而不是像非泛型代码中那样导致运行时异常.