Java 1.4.2, , 班级 java.math.BigInteger 实现接口 Comparable, Serializable.

Java 1.5.0, , 班级 java.math.BigInteger 实现接口 Serializable, Comparable<BigInteger>.

这只是帮助我问的一个例子 <>. 。我真正想知道的是 <> 东西。

我的问题是三倍:

  • 什么是 <BigInteger> 的一部分 implements 陈述意思?
  • 该语法叫什么?
  • 它做什么?

PS:Google真的很难 <> 并且不可能搜索 <> 首先。

谢谢!

有帮助吗?

解决方案

阅读 Java Generics教程. 。角括号之间的事物是类型参数 - 可比性是通用类,在这种情况下,角括号意味着该类可与其他BigIntegers媲美。

为了在这种情况下进行更多澄清,请看一下 Javadocs可比 在1.5中。请注意,它被声明为 Comparable<T>, ,那 compareTo 方法参数类型 T. 。 T是使用接口时“填充”的类型参数。因此,在这种情况下,宣布您实施 Comparable<BigInteger> 意味着您必须有一个 compareTo(BigInteger o) 方法。另一个类可能实现 Comparable<String> 意味着它必须实施 compareTo(String o) 方法。

希望您能看到上述片段的好处。在1.4中,签名 compareTo 只能去 Object 由于所有类型的类都可以进行可比,因此无法确切知道需要什么。但是,使用仿制药,您可以指定与特定类相可比性,然后编写一个更具体的比较方法,该方法仅将该类作为参数。

这里的好处是两个方面。首先,您不需要做 instanceof 检查方法的实现。其次,编译器可以在编译时间进行更多类型检查 - 您不能意外地将字符串传递到实施的东西中 Comparable<BigInteger>, ,因为类型不匹配。编译器能够向您指出这一点要好得多,而不是像非类别代码中通常发生的那样引起运行时例外。

其他提示

我很确定是仿制药

http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html

我问了类似的东西(c#),那里有有用的信息 方法是什么u003CClassName>意思是?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top