Win a copy of Programmer's Guide to Java SE 8 Oracle Certified Associate (OCA) this week in the OCAJP forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

which method will be called

 
aruna makhija
Greenhorn
Posts: 17
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi friends,
This is my first post! I was unable to find a good description of this topic in RH and Bill Brodgen's Exam Cram. Will the JLS be helpful ? Do you think we should study the JLS real well before taking the exam ?
Thanks,
Aruna
Please tell me What is the result of executing the following code:
class Test {
public static void main(String[] args) {
Test t = new Test();
t.test(1.0, 2L, 3);
}
void test(double a, double b, short c) {
System.out.println("1");
}
void test(float a, byte b, byte c) {
System.out.println("2");
}
void test(double a, double b, double c) {
System.out.println("3");
}
void test(int a, long b, int c) {
System.out.println("4");
}
void test(long a, long b, long c) {
System.out.println("5");
}
}
 
Ragini Kelkar
Greenhorn
Posts: 9
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The test method is called with(1.0,2L,3) which is
(double,long,int)
Since there is no test method that exactly matches this it will select the one that will promote the parameters passed to the required values.
Hence it will call test(double,double,double)
Hence it will promote long and int to double.
It will print 3.
 
Jane Griscti
Ranch Hand
Posts: 3141
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Aruna,
You might want to read JLS§5.3 Method Invocation Conversion.
It doesn't hurt to through the JLS; it has a number of code examples that are worth working through.
Hope that helps.
------------------
Jane
The cure for boredom is curiosity.
There is no cure for curiosity.
-- Dorothy Parker
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic