- 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/
我正在研究 Java Se 7 OCA,无法弄清楚为什么下面的代码无法编译。主方法中的方法调用会给出编译错误,指出方法不明确。在此重载方法示例中,加宽和装箱之间的优先级规则似乎发生冲突。 public
如有错误,请指正。Boxing+Varargs 是否优于 Boxing+Widening? 我在site中找到了那是另一种方式。 最佳答案 当多个可以符合条件时调用什么方法在 JLS #15.2.2
当元素在屏幕上时,我试图加宽一个 div(模拟进程栏)。我不能让任何事情发生。我究竟做错了什么?我正在尝试使用: jQuery $(document).ready(function() {
我正在尝试使用自定义样式表更改垂直 QScrollBar 的宽度 QScrollBar:vertical { border: 2px solid grey; background:
我遇到了 https://code.google.com/p/hamcrest/issues/detail?id=130为 Hamcrest 匹配器添加一些语法糖。但这个想法被 Hamcrest 开发
我是一名优秀的程序员,十分优秀!