File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes return type problem Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "return type problem" Watch "return type problem" New topic

return type problem

sambasivarao laghuvarapu

Joined: Jun 07, 2007
Posts: 9
class Test {

public static void main(String[] args) {
static byte m1( ) {
final char c1 ='2';
return c1; //line 1
static byte m2(final char c2) {
return c2; //line 2

while i am compiling this code i am getting compiler error at line 2 only.i am not getting compiler error at line 1 why.please help anybody.
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 15082

Please do not post the same question multiple times.

Note that if you want to edit your post after submitting it, you can do so by clicking the button.
[ September 02, 2007: Message edited by: Jesper Young ]

Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 8 API documentation
Burkhard Hassel
Ranch Hand

Joined: Aug 25, 2006
Posts: 1274
Howdy Sam!

Welcome to the ranch!

I added a little comment to your code

You won't get a compiler error on line 1. char c1 is final and has one value once and for all. The char value of '2' can be converted into an int value of 50. This is a value that fits also into the byte range of a byte.

But you will get an error in line 2. The compiler sees that it gets a value that might have changed.
You should also get an error in the "line in the middle" because you try to change a final variable. But the compiler sees the error in line 2 first and does not report the other one.
If you change line 2 to return 1; (which is a legal return for a byte) then compiler would mark an error in the line in the middle: "final parameter c2 may not be assigned".

If you change the whole method to

Then the former line 2 is also wrong, because you cannot give a char back because it doesn't fit always into a byte.
It does not help now that the char is final. Because you could easily invoke the method with a char value of - say '\u0080' (128, just one too big).


all events occur in real time
I agree. Here's the link:
subject: return type problem
jQuery in Action, 3rd edition