use*_*658 10 java extends interface
我已经使用这个网站大约6个月了,是时候问我的第一个问题了,因为我找不到答案,至少不是我能理解的答案!
在这段代码中,为什么这个接口会自行扩展?
public interface PositionedVertex<V extends PositionedVertex<V>> {
/**
* @return Position for node data.
*/
public Point getPosition();
}
Run Code Online (Sandbox Code Playgroud)
这段代码不一样吗?:
public interface PositionedVertex<V> {
/**
* @return Position for node data.
*/
public Point getPosition();
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
rge*_*man 11
接口没有扩展自己.该<V extends PositionedVertex<V>>是与您的界面相关的通用型绑定.它只是意味着实现此接口的任何类的泛型类型参数本身必须是a PositionedVertex.
在第一种情况下,您已将泛型类型参数限制为其自身的子类型interface,而在第二种情况下,您可以将任何类型作为泛型类型参数。因此,它们可能是不同的声明。
例如,您可以定义如下引用:
PositionedVertex<String>
Run Code Online (Sandbox Code Playgroud)
为2nd interface type,但不为1st one。