Question:
Why am I getting a type conversion error with the following method:
public synchronized void setVisible(Boolean b) { setLocation(50, 50); super.setVisible(b);}
Answer:
You do not mention what setVisible
method you are overriding, but I will assume it’s the one in java.awt.Component
. That method requires an argument of the primitive boolean
type, rather than the Boolean
object type defined in the java.lang
package. If you’re not used to a language with a primitive boolean
type, it is easy to forget that it is primitive, and instead assume it is a class, and use a conventionally capitalized class name instead. Java provides a set of wrapperclasses for primitve types because Java primitive types do not derive from java.lang.Object
. Often it is necessary to return a value or pass an argument value as an Object, rather than a primitive type. The Boolean
class provides this wrapping ability for boolean
types. Remember, when your compiler spits out a class casting error, carefully check the types of all ofyour variables. When passing arguments, double check the parameter types against the method signature.