我一直在使用这个网站现在大约6个月的,其时问我的第一个问题,因为我无法找到这个问题的答案,至少不是一个答案,我可以理解!
在这段代码,为什么这个接口扩展本身?
public interface PositionedVertex<V extends PositionedVertex<V>> {
/**
* @return Position for node data.
*/
public Point getPosition();
}
难道不这段代码做同样的?:
public interface PositionedVertex<V> {
/**
* @return Position for node data.
*/
public Point getPosition();
}
提前致谢!
接口没有扩展本身。 所述<V extends PositionedVertex<V>>
是一个结合在与您的接口相关的通用类型。 它只是意味着对于任何类实现此接口的泛型类型参数本身必须是一个PositionedVertex
。
在第一种情况下,你有你有界泛型类型参数是的亚型interface
本身,而在第二种情况下,你可以拥有任何类型作为泛型类型参数。 所以,它们是潜在的不同声明。
例如 ,您可以定义一个基准,如:
PositionedVertex<String>
对于2nd interface type
,但不适合1st one
。
它不是扩大本身。 据指定其通用参数v必须代表延伸或自身实现一个类型。
没有有效说明为什么没有表现出更多的代码。 还是这一切? 什么它实际上是告诉你的是,有在这个界面的某个地方使用某种类型的V(作为参数传递给函数,或作为返回类型)是同一类型的接口本身。
这是扩展通用。 关于泛型更多信息: http://docs.oracle.com/javase/tutorial/extra/generics/intro.html