Win a copy of Functional Reactive Programming this week in the Other Languages forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

small doubt in declaration

 
shilpa Reddy
Ranch Hand
Posts: 42
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I know this question is very simple but i have a basic doubt.In the below code invade(7) what is the variable type..is 7 by default declared a int..

class Alien {
String invade(short ships) { return "a few"; }
String invade(short... ships) { return "many"; }
}
class Defender {
public static void main(String [] args) {
System.out.println(new Alien().invade(7));
} }
What is the result?
A. many
B. a few
C. Compilation fails.
D. The output is not predictable.
E. An exception is thrown at runtime.

Answer is: C is correct, compilation fails. The var-args declaration is fine, but invade takes a short,
so the argument 7 needs to be cast to a short. With the cast, the answer is B, 'a few'.
 
Keith Lynn
Ranch Hand
Posts: 2409
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes, whole number literals are ints, provided they are in the range of an int.
 
Ramamoorthy Periasamy
Ranch Hand
Posts: 30
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thats what you need to understand the difference between method invocation conversion and assignment conversion.

Assignment conversion includes the narrowing primitive conversions.
example: short s = 10; // no error
Method invocation conversion doesn't include the narrowing primitive conversions
example: method(short s) {} method(10); // compile time error
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic