2015-11-07 50 views
0

目前在java中編寫代碼來玩紙牌遊戲「戰爭」。我有一個錯誤是:未定義大於表達式,java

操作員>是未定義的參數類型(一個或多個) Class<capture#1-of ? extends Card>Class<capture#2-of ? extends Card> 操作<是未定義的參數類型(一個或多個) Class<capture#3-of ? extends Card>Class<capture#4-of ? extends Card>

我寫的代碼是這個(併爲「<」表達的相同)

if (player1Card.getClass() > player2Card.getClass()) { 
    player1Cards.addLast(player2Card) ; 
    player1Cards.addLast(player1Card) ; 

如何定義小於和大於符號?我不知道把定義放在哪裏,Eclipse只顯示錯誤信息。

+0

你爲什麼要比較課堂?!?你想達到什麼目的?通常,類只與'='比較,而不是'<' or '>' – Marged

+0

Java不支持用戶定義的運算符重載(與本例中的C++不同)。您需要以不同的方式處理您的問題。 –

+0

'player1Card'和'player2Card'是什麼類型?您需要該類型實現['Comparable'](https://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html)**或**您可以創建一個[這個**類型**的'Comparator'](http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html)。 –

回答

1

player1Card.getClass()返回Class類型的對象。 Java無法將類與>運算符進行比較。你不能在java中重新定義運算符。

你可以,但是,比較的類名的lenghts這樣的:

if (player1Card.getClass().getName().length() > player2Card.getClass().getName().length()) {... 

或者你可以定義自己的比較法:

if (greaterThan(player1Card.getClass(), player2Card.getClass()) {... 

// and somewhere else in the same .java file: 
public boolean greaterThan(Class clazz1, Class clazz2) {... 

或者,更復雜,寫一個Comparator爲類。

0

由於您所要求的與訂購有關,您可以實現比較器接口。然後,您可以簡單地比較(object1,object2),它將爲case object1 < object2返回一個負整數,對於case object1 == object2則爲0,對於case object1> object2則返回一個正整數。