问题描述
record.get("key")
在这里, record
是org.apache.avro.GenericReord
。
就我而言,它返回utf8
。
我需要字符串。
所以我发现了可能性
record.get("key").toString() - I prefer cast than this method
record.get("key")+"" - It calls string concatenation method
以上两项作品。
(String)record.get("key") - Obviously it throws a classcastexception.
new String(record.get("key")) - new String(Object) is undefined.
上面的两个不起作用。
我的疑问是,在我的方案中,在toString()
和+
的性能方面哪个更好。
1楼
您还有另一个选择,即String.valueOf(record.get(“ key”))不要直接使用record.get(“ key”)。toString(),因为获取NullPointerException可能有所变化。
方式差异
record.get("key")+""
使用StringBuilder创建结果字符串,而
String.valueOf(record.get("key"))
只需调用String的静态方法即可获取对象的String版本
2楼
toString()
效果更好。
当您使用+
运算符时,它将比较两个对象的类型以执行操作。
恩。
如果两者都是数字类型,则会将两者相加,但是如果具有不同类型,则将仅调用对象的toString()
并连接字符串。
使用toString()
获得NullPointerException的机会很高。
您可能要使用String.valueOf(record.get("key"))