不懂班<! - ?扩展VersionedProtocol - >协议;

时间:2013-09-04 19:45:15

标签: java

在阅读java程序时,我遇到以下代码行

Class<? extends VersionedProtocol> protocol;

<? extends VersionedProtocol>代表什么?这是一种定义类的机制吗?

2 个答案:

答案 0 :(得分:2)

Class类具有表示自身的泛型类型参数。所以这里Class<? extends VersionedProtocol>表示Class对象代表VersionedProtocol类或VersionedProtocol的子类。

这称为upper-bounded wildcard in Java generics

答案 1 :(得分:0)

如果您不想详细了解Java通用概念,请记住以下几点,您仍然可以毫无问题地阅读该程序。

  1. 泛型主要用于编译时安全性,因此在运行时不存在。
  2. 您可以阅读与Class<? extends VersionedProtocol> protocol;
  3. 相同的Class protocol;

    因此,无论您遇到通用语法,只需忽略<>标记中的任何内容;你应该全力以赴。