- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我有一个 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/
在进行控制流分析时,Typescript 似乎正在缩小联合: type Foo = {x: number} type Bar = {x: number, y: string} function f(a
当单元格第一次出现时,它们看起来像我的图片所示。如果向上滚动然后向下滚动让它们再次显示,它们将是正常的。顶部三个单元格始终正常,而底部变窄。这是我的代码` import UIKit class All
我是一名优秀的程序员,十分优秀!