我有一个带Object o
参数的方法.
在这个方法中,我确切地知道String
在"o"中有一个非空的.无需检查或执行其他操作.我必须像String
对象一样对待它.
只是好奇 - 什么更便宜 - 把它投入String
或使用Object.toString()
?或者是时间/ cpu-/mem-价格相同?
更新:该方法接受,Object
因为它是接口的实现.无法更改参数类型.
它根本不可能null
.我只想说我不需要检查它是否为空或空.在我的情况下,总是有一个非空的字符串.
转换为String更便宜,因为它不需要外部函数调用,只需要内部类型检查.
我会用演员.这证实了你的"知识",即它是一个字符串.如果由于某种原因你最终得到一个bug并且有人传递了一个字符串以外的东西,我认为抛出一个异常(演员会做的)比继续执行有缺陷的数据更好.
根据Silly表现思考:x.toString()vs(String)x
在最后,结果非常清楚:将Object转换为String的速度至少是调用Object.toString()的两倍.
如果您知道Object o是一个String,我会说它只是将它转换为String并以这种方式强制执行.在一个你知道肯定是String的对象上调用toString()可能只会增加混乱.
如果Object o可能不是String,则需要调用toString().