2013-09-05 85 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如果大於。