2013-09-05 88 views
1

嘿,我想了解GWT展示中的一些代码,我不确定下面的代码是干什么的。有人可以解释它,更重要的是,可以解释为什么语法按照它的方式工作?我还没有看到过这样的东西,我不知道为什么/它是如何工作的。谢谢!Java语法解释

public int compareTo(ContactInfo o) { 
    return (o == null || o.firstName == null) ? -1 : -o.firstName.compareTo(firstName); 
} 
+1

这是内联if语句:“?:”。就像一个实际的if-then-else一样,它有一个条件,一个真值和一个假值。 – abiessu

回答

7

这意味着: 如果条件为真,return -1,否则return -o.firstName.compareTo(firstName);

及其if-then-else快捷语法。

?后,如果条件为真

:是,如果条件为假

+0

“它是其他语言的快捷语法。”实际上,它可以与部分表达式内联。 – hexafraction

+0

'另一个条件运算符是?:,它可以被认为是if-then-else语句的缩写 - http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html – Habib

+0

谢谢大家,解释得很好,明白了! – john

0

如果o或o.firstName为null,则返回-1做什么做什么; 否则返回与firstName相比o.firstName的负值。

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); 
} 

(当然还有其他人可以(也应该)被省略)

0

此方法是从可比的接口,在这种情况下,以特定的ContactInfo。的ContactInfo的定义应该是这样的

public class ContactInfo implements Comparable<ContactInfo >{ 
    ... 
} 

了一句:

contact.compareTo(otherContact); 

必须返回-1,如果contact小于otherContact(如果contactfirstName是字母小于otherContactfirstName) 0如果contact等于otherContact,并且1如果大于。