嘿所有我正在尝试理解GWT展示中的一些代码,我不确定以下代码是做什么的。有人可以解释它,更重要的是,解释为什么语法按照它的方式工作?我没有看到类似的东西,我不知道为什么/它是如何工作的。谢谢!
public int compareTo(ContactInfo o) {
return (o == null || o.firstName == null) ? -1 : -o.firstName.compareTo(firstName);
}
答案 0 :(得分:7)
这意味着:
如果条件为真,则为return -1
,否则为return -o.firstName.compareTo(firstName);
它是if-then-else
的快捷语法。
如果条件为真,?
之后该怎么办
如果条件为假,:
之后该怎么办
答案 1 :(得分:0)
如果o或o.firstName为null则返回-1; 否则返回o.firstName的负值与firstName相比。
答案 2 :(得分:0)
我认为它是'?'和':'让你困惑。它只是if语句的简写符号,如:expression ? then-value : else-value
所以在你的情况下它可以写成
public int compareTo(ContactInfo o) {
if (o == null || o.firstName == null)
then return -1;
else return -o.firstName.compareTo(firstName);
}
(当然其他的可以(而且应该被省略)
答案 3 :(得分:0)
这被称为三元运算符。
boolean value = (condition) ? true : false;
这篇博客文章解释了它是什么以及如何使用它。
答案 4 :(得分:0)
此方法来自Comparable接口,在本例中特定于ContactInfo。 ContactInfo的定义应该是这样的
public class ContactInfo implements Comparable<ContactInfo >{
...
}
句子:
contact.compareTo(otherContact);
如果contact
小于otherContact
(firstName
contact
的字母小于firstName
otherContact
,则必须返回-1 ,如果contact
等于otherContact
则为0,如果大于。{/ p>则为1