I was trying to get some code done for class:
public int getValue(char value) {
if (value == 'y') return this.y;
else if (value == 'x') return this.x;
Since I might not be able to return anything in the end, it told me to do this at the end:
return value;
This surprised me because the return type for the method was of type int
. Yet, it was telling me to return a char
! I'm using eclipse, and accustomed to the endless number of warnings and stuff, this was a major surprise.
So, is a char
really an int
? Why is this happening?
The Java Language Specification states
where the rules governing whether one value is assignable to another is defined as
and
and finally
In short, a
char
value as the expression of areturn
statement is assignable to a return type ofint
through widening primitive conversion.