| Author |
problems in method overloading
|
Dharmenrda kumar
Greenhorn
Joined: May 13, 2011
Posts: 19
|
|
class Array{
static void display(float i){
System.out.println("float");
}
public static void main(String[] arg){
long l=400000000000l;
display(l);
}
}
it's output is float.
my problems is why it not showing compilation error .
because i am sending long type (takes 8 byte) as an argument, but in display() method parameter is of float type(take 4 byte).
according to K&B books -:
"when an exact match isn't found, the JVM uses the method with the smallest argument that is wider than the parameter. "
but in this case float(4 byte) is not wider than the long(8 byte).
|
OCJP 96%
|
 |
Thorsten Schneider
Greenhorn
Joined: Apr 04, 2011
Posts: 16
|
|
|
This problem was discussed some days ago in this Thread. There is also a link that seemed to clarify the problem: http://stackoverflow.com/questions/1293819/why-does-java-implicitly-without-cast-convert-a-long-to-a-float
|
OCPJP 6
|
 |
Dharmenrda kumar
Greenhorn
Joined: May 13, 2011
Posts: 19
|
|
thanks Thorsten....
|
 |
 |
|
|
subject: problems in method overloading
|
|
|