从Object到String,造型转换好还是toString()好?

J2002 2004-06-28 04:11:16
从Object到String,造型转换好还是toString()好?
下面给出3段代码,大家比较一下,说说哪个好?
A:
private String getString(Object aObject){
if(aObject == null){
return null;
}
if (aObject instanceof String == false) {
return null;
}
String aString = (String) aObject;
if(aString.trim().length() == 0){
return null;
}

return aString;
}
B:
private String getString(Object aObject){
if(aObject == null){
return null;
}
String aString = aObject.toString();
if(aString.trim().length() == 0){
return null;
}

return aString;
}
C:
private String getString(Object aObject){
if(aObject == null){
return null;
}
String aString = null;
try {
aString = (String) aObject;
} catch (Exception e) {
aString = aObject.toString();
}
if(aString.trim().length() == 0){
return null;
}

return aString;
}
我个人认为,代码B最好,C次之,A不好。当传入的aObject原本就是String时,3段代码没有什么区别,当传入的aObject原本不是String时,比如Integer,代码B、C都能得到期望的结果,但我个人倾向于使用代码B。大家帮忙看一下,我的看法是否正确?
...全文
287 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
HawaiiLeo 2004-06-28
  • 打赏
  • 举报
回复
还是下面两种方式使用的多吧:

String aString = aObject.toString();
String aString = String.valueOf(aObject);
allenhe 2004-06-28
  • 打赏
  • 举报
回复
private String getString(Object aObject){
return aObject==null?"<NULL>":aObject.toString();
}

道理自己慢慢想
J2002 2004-06-28
  • 打赏
  • 举报
回复
to hykwolf(Yankang Hu) :
1.
传入的aObject其实不一定是String,还可能是Integer,这时造型转换是会有异常的。
所以要保证得到正确的结果,必须对是否进行造型转换做出判断。
我希望,"9"和Integer(9),传入后都能返回字符串"9"。
2.
""和null是不一样的,但是我想实现的逻辑就是把""处理成null
3.
数组在toString()的时候,的确结果不是我们想要的,但是为了简化问题,传入的aObject,保证不会是数组。

谢谢大家参与讨论,我刚才又想了一下,代码B的这句:
String aString = aObject.toString();
也可以这样写:String aString = String.valueOf(aObject);
这两句本质是一样的:因为jdk的源码里,valueOf(Object obj)最后调的是obj.toString()。
hykwolf 2004-06-28
  • 打赏
  • 举报
回复
其实不用这么麻烦吧
我都只用
Object obj = ...;//假设
Stirng x = (String)obj;
若obj == null,那么此时x = null,不会跑出NullPoniterException的哦!
若obj 是个 "";
那么你提供的方法都会返回一个null出来,其实""和null是不一样的阿,建议原样返回.
这里使用(String)就好了,如果当你想做Object -> String的时候,其实你已经知道这个object其实就是一个String,那么你用(String)Object足够了,不会产生什么异常的拉。
用toString()有时会有以外的结果发生的,比如数组在toString()的时候;
binny 2004-06-28
  • 打赏
  • 举报
回复
……
jspxnet 2004-06-28
  • 打赏
  • 举报
回复
b
maowu 2004-06-28
  • 打赏
  • 举报
回复
c肯定不好。
不应该用try & catch来做这种事情。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧