目前正在用java编写代码来玩卡片游戏“战争”。我遇到的错误是:
运营商>未定义参数类型
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只显示错误消息。
答案 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的。