I am writing a BST Program. I get the error:
"Bad Operand Types for Binary Operator ">"
first type: java.lang.Object
second type: java.lang.Object"
This is the method where it gives me the error:
public void placeNodeInTree(TreeNode current, TreeNode t)
{
if(current == null)
current = t;
else{
if(current.getValue() > t.getValue())
current.setRight(t);
if(current.getValue() < t.getValue())
current.setLeft(t);
}
}
getValue() has a return type of Object, thus the java.lang.Object types. This is the first time I have ever seen this error. Can anyone give me some background on this error? Thanks
Sure - you simply can't apply the
>
operator between objects. What would you expect it to do? You can't apply any of the other binary operators either -+
,-
,/
etc (with the exception of string concatenation).Ideally, you should make your
TreeNode
generic, and either have aComparator<T>
which is able to compare any two instances, or makeT extend Comparable<T>
. Either way, you can then compare them with:or
Without generics you could cast the values to
Comparable
or still use a generalComparator
... but generics would be a better bet.The default implementation of equals only cares about reference equality. An object does not know if Cat is greater than Apple nor would it care. You should provide a concrete implementation that overrides both equals and hashcode as well as implements the Comparable interface. This will allow you to determine if in fact Cat is greater than Apple.
Java doesn't support operator overloading, so the
<
operator is not defined for non-primitive types. You probably want to use theComparable<T>
interface instead.You cannot compare two arbitraty objects with the
>
operator. The>
operator can only be used (directly) on primitive integer types.You could make the objects you intend to compare implement interface
java.lang.Comparable
, and then call thecompareTo
method on them to compare them.You cannot compare objects using
>
or<
. You need to compare them using some method, like compareTo (which you need to implement).