Java 用一种奇怪的方式写的方法,我的建议正确吗?
我有一个方法是别人的程序,但我更愿意以更可读的方式编写它。我只需要检查一下我的建议是否正确 当前记录为:Java 用一种奇怪的方式写的方法,我的建议正确吗?,java,if-statement,Java,If Statement,我有一个方法是别人的程序,但我更愿意以更可读的方式编写它。我只需要检查一下我的建议是否正确 当前记录为: if (userData instanceof String && ((String) userData).compareTo(name) == 0) 可以是: if(.... && userData.equals(name)) 谢谢是的compareTo返回0返回true 从api: 返回: 。。。负整数,零,或正整数,因为此对象小于、等于,或大于指定
if (userData instanceof String && ((String) userData).compareTo(name) == 0)
可以是:
if(.... && userData.equals(name))
谢谢是的<当
等于时,code>compareTo
返回0
返回true
从api: 返回: 。。。负整数,零,或正整数,因为此对象小于、等于,或大于指定对象 从api文档中: 返回: 如果参数是一个按字典顺序与此字符串相等的字符串,则值为0
对<当
等于时,code>compareTo
返回0
返回true
从api: 返回: 。。。负整数,零,或正整数,因为此对象小于、等于,或大于指定对象 从api文档中: 返回: 如果参数是一个按字典顺序与此字符串相等的字符串,则值为0
直接从java文档中获取: 如果字符串相等,则结果为零;当equals(Object)方法将返回true时,compareTo将返回0
直接从java文档中获取: 如果字符串相等,则结果为零;当equals(Object)方法将返回true时,compareTo将返回0
你甚至可以进一步简化。如果您确定
name
是一个字符串,则可以将其全部简化为:
name.equals(userData)
不过,您必须检查name
上的空值。在原始代码中,空性检查是由于userData
上的instanceof
表达式
name != null && name.equals(userData)
String.equals()
已在检查字符串的实例
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
你甚至可以进一步简化。如果您确定name
是一个字符串,则可以将其全部简化为:
name.equals(userData)
不过,您必须检查name
上的空值。在原始代码中,空性检查是由于userData
上的instanceof
表达式
name != null && name.equals(userData)
String.equals()
已在检查字符串的实例
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
对。然后instanceof有效地只保护userData的空值。如果您知道其中一个为非null,则可以进一步简化为:
if (non_null_string.equals(possibly_null_string)) {
....
}
对。然后instanceof有效地只保护userData的空值。如果您知道其中一个为非null,则可以进一步简化为:
if (non_null_string.equals(possibly_null_string)) {
....
}
很好,但是如果name==null
它将抛出一个异常。@dacwe是的。不过,OP也没有检查null
s。如果userData
isnull
字符串的实例返回false
,如果name
为null
则它不等于userData
@dacwe大点。谢谢你把这个细节讲出来。我不知道stringx=null;字符串的x实例
无法满足。我已经更新了答案来说明这一点。很好,但是如果name==null
它将抛出一个异常。@dacwe是的。不过,OP也没有检查null
s。如果userData
isnull
字符串的实例返回false
,如果name
为null
则它不等于userData
@dacwe大点。谢谢你把这个细节讲出来。我不知道stringx=null;字符串的x实例
无法满足。我已经更新了答案来说明这一点。