gpt4 book ai didi

java - 在 Java 中加宽后变窄

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:12:47 26 4
gpt4 key购买 nike

假设我有一个 String 对象引用,并将它分配给一个 Object 引用。这将隐式执行 widening

Object o = "Hello World"

现在我们不能在 o 上使用任何 String 方法。我的问题是,这种类型转换是否会导致数据丢失,就像在 C++ 中一样,如果我们将 float 转换为 int,数据就会丢失。

如果我明确地将 o 转换回 String,我将能够访问实际的 String

Java 中有很多方法都将 Object 类型变量作为参数。因此我可以将任何类型的对象引用传递给该参数。我可以通过显式缩小此对象将其转换回原始对象吗?

最佳答案

对于对象,您只需转换引用。对象 (String) 仍然完好无损。

当您将 String 传递给方法调用时,您只是将引用传递给它(就像遇到返回值时发生的那样)。您可以检查并重铸使用

if (o instanceof String) {
String s = (String)o;
}

并安全地使用该字符串(请注意,如果您经常这样做,它可能指向不正确的对象建模,但这是另一个问题)

请注意,您还谈到了 float /整数,它们与上面的不同,因为它们是 Java 原语,而不是引用。参见 here有关类型转换原语的讨论。简而言之,您将在此处丢失数据。

关于java - 在 Java 中加宽后变窄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14979621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com