嘿,我想了解GWT展示中的一些代碼,我不確定下面的代碼是幹什麼的。有人可以解釋它,更重要的是,可以解釋爲什麼語法按照它的方式工作?我還沒有看到過這樣的東西,我不知道爲什麼/它是如何工作的。謝謝!Java語法解釋
public int compareTo(ContactInfo o) {
return (o == null || o.firstName == null) ? -1 : -o.firstName.compareTo(firstName);
}
嘿,我想了解GWT展示中的一些代碼,我不確定下面的代碼是幹什麼的。有人可以解釋它,更重要的是,可以解釋爲什麼語法按照它的方式工作?我還沒有看到過這樣的東西,我不知道爲什麼/它是如何工作的。謝謝!Java語法解釋
public int compareTo(ContactInfo o) {
return (o == null || o.firstName == null) ? -1 : -o.firstName.compareTo(firstName);
}
這意味着: 如果條件爲真,return -1
,否則return -o.firstName.compareTo(firstName);
及其if-then-else
快捷語法。
的?
後,如果條件爲真
後:
是,如果條件爲假
「它是其他語言的快捷語法。」實際上,它可以與部分表達式內聯。 – hexafraction
'另一個條件運算符是?:,它可以被認爲是if-then-else語句的縮寫 - http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html – Habib
謝謝大家,解釋得很好,明白了! – john
如果o或o.firstName爲null,則返回-1做什麼做什麼; 否則返回與firstName相比o.firstName的負值。
我認爲這是'?'和':'讓你感到困惑。這是一個簡單的速記符號的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);
}
(當然還有其他人可以(也應該)被省略)
這就是所謂的三元運算符。
boolean value = (condition) ? true : false;
此博客文章解釋了它是什麼以及如何使用它。
此方法是從可比的接口,在這種情況下,以特定的ContactInfo。的ContactInfo的定義應該是這樣的
public class ContactInfo implements Comparable<ContactInfo >{
...
}
了一句:
contact.compareTo(otherContact);
必須返回-1,如果contact
小於otherContact
(如果contact
firstName
是字母小於otherContact
firstName
) 0如果contact
等於otherContact
,並且1如果大於。
這是內聯if語句:「?:」。就像一個實際的if-then-else一樣,它有一個條件,一個真值和一個假值。 – abiessu