未定义大于表达式,java

时间:2015-11-07 21:14:19

标签: java

目前正在用java编写代码来玩卡片游戏“战争”。我遇到的错误是:

  

运营商&gt;未定义参数类型   Class<capture#1-of ? extends Card>Class<capture#2-of ? extends Card>     操作员&lt;未定义参数类型   Class<capture#3-of ? extends Card>Class<capture#4-of ? extends Card>

我写的代码是这个(和“&lt;”表达式相同)

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

如何定义小于和大于符号?我不知道在哪里放置定义,Eclipse只显示错误消息。

2 个答案:

答案 0 :(得分:1)

player1Card.getClass()返回类型为Class的对象。 Java无法将类与>运算符进行比较。您无法在java中重新定义运算符。

但是,您可以比较类名的长度:

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

答案 1 :(得分:0)

由于您的要求与订购有关,您可以实施Comparator界面。然后,您可以简单地进行比较(object1,object2),这将返回案例object1的负整数&lt; object2,一个0用于case object1 == object2或一个正整数用于case object1&gt; Object2的。