java - JAVA 中的内部转换是如何工作的?原始和引用转换

标签 java casting

<分区>

它的理论问题。有人告诉我,类型转换物体不是最好的做法。所以我们使用泛型来避免它。

1.但内部发生了什么? 2.为什么不气馁?
3.Java内部实现在哪里?

请举例说明,并说明过程中涉及的方法/类。

我能覆盖它的默认实现吗? (只是好奇,希望它不是傻的)

最佳答案

对于原始类型和引用类型,转换的含义略有不同。

对于原始类型,它可用于将一种类型的原始类型转换为另一种类型,例如narrowing primitive conversions。 .

对于引用类型,这意味着您告诉编译器“我有一个类型为 A 的变量,但我希望您跳过常规类型检查并将其视为类型 B”。转换引用类型不进行任何类型的转换。它绕过了编译器的正常类型检查。类型检查仍将完成,但在运行时而不是编译时。如果对象的类型不正确,您将得到一个 ClassCastException

为什么不鼓励:因为它使您的程序的类型安全性降低。类型系统可以帮助您发现错误,而强制转换意味着您故意跳过类型检查,并在运行程序时冒着遇到 ClassCastException 的风险。

内部实现:这只是 Java 编译器所做工作的一部分。您不能覆盖转换的工作方式,这也不是很有用。 (改变强制转换的含义会改变 Java 编程语言的规则)。

关于java - JAVA 中的内部转换是如何工作的?原始和引用转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27855821/

相关文章:

java - 如何在数组/数组列表中存储多个用户输入(String、Int、Double)并输出存储的数据(Java)?

java - HTTP 响应被缓存在 Android 客户端中

c - 使用 32 位读取以原子方式读取 4 个字节的数组

java - 如果应该避免向下转型,我应该怎么做?

c++ - VS2015中的一个编译问题

将 unsigned char* 转换为 long

java - 为什么我不能在第一个条件中使用类型检查变量作为第二个条件中的类型转换变量?

java - GUI 变得杂乱

java - Swing UIManager 默认系统观感

java - 无法在 Heroku 部署的应用程序上启用 COAP