Java 具有泛型,而 C++ 提供了非常强大的编程模型 template
s。那么,C++ 和 Java 泛型有什么区别呢?
原文由 popopome 发布,翻译遵循 CC BY-SA 4.0 许可协议
Java 具有泛型,而 C++ 提供了非常强大的编程模型 template
s。那么,C++ 和 Java 泛型有什么区别呢?
原文由 popopome 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想在这里引用 askanydifference :
C++ 和 Java 之间的主要区别在于它们对平台的依赖性。而 C++ 是平台相关语言,Java 是平台无关语言。
上述陈述是 C++ 能够提供真正的泛型类型的原因。虽然 Java 确实有严格的检查,因此它们不允许像 C++ 允许的那样使用泛型。
原文由 Piyush-Ask Any Difference 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
他们之间有很大的不同。在 C++ 中,您不必为泛型类型指定类或接口。这就是为什么您可以创建真正通用的函数和类,但需要注意的是更宽松的类型。
上面的方法添加了两个相同类型的对象,并且可以用于任何具有“+”运算符的类型 T。
在 Java 中,如果要对传递的对象调用方法,则必须指定类型,例如:
在 C++ 中,泛型函数/类只能在标头中定义,因为编译器会为不同的类型(调用它的)生成不同的函数。所以编译比较慢。在 Java 中,编译没有重大损失,但 Java 使用一种称为“擦除”的技术,其中泛型类型在运行时被擦除,所以在运行时 Java 实际上是调用…
尽管如此,Java 的泛型有助于类型安全。