比较 C 和 Java 中的“通用”类型
Java 和 C 都包含处理泛型类型的机制。虽然这些功能有相似之处,但它们之间存在明显的差异。
主要区别:类型规范
在 C 中,泛型类型不需要指定类或接口。这种灵活性允许创建具有更宽松类型的真正通用函数和类。例如,以下 C 函数可以使用“”运算符添加任何类型的对象:
<code class="cpp">template <typename T> T sum(T a, T b) { return a + b; }</code>
另一方面,在 Java 中,泛型类型需要指定类型来调用传递对象上的方法。此限制确保了类型安全,但限制了它们的灵活性:
<code class="java"><T extends Something> T sum(T a, T b) { return a.add ( b ); }</code>
代码生成和优化
在 C 中,泛型函数和类在标头中定义,因为编译器为不同的类型生成不同的函数。这个过程会在编译过程中产生性能开销。
在 Java 中,编译受泛型影响较小,因为它在运行时采用了一种称为“擦除”的技术。这意味着泛型类型被有效删除,导致以下调用:
<code class="java">Something sum(Something a, Something b) { return a.add ( b ); }</code>
含义
C 和 Java 泛型之间的选择取决于具体要求。
以上是C 和 Java 泛型有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!