Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 final?
Index -> Programming, Java -> Java Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
matt271




PostPosted: Wed May 20, 2009 4:31 pm   Post subject: final?

from my understanding, in java, final means constant.

like:

Java:
public static final String eh = "the";


but i tried to created a nested thread like this:

Java:
    public void test(final String eh) {
        new Thread() {
            @Override
            public void run() {
                System.out.println(eh);
            }
        }.start();
    }


and netbeans told me to "make String eh final" so i am curious what this final means in this case. how can it be a constant if its an argument?

public void test(final String eh) {

ty
Sponsor
Sponsor
Sponsor
sponsor
Vermette




PostPosted: Wed May 20, 2009 5:30 pm   Post subject: Re: final?

Declaring method parameters to be final is a defensive programming strategy to help avoid unintended side effects. If the method has no need to modify a passed value, the final keyword prevents you from doing so.

Java:

//changing final values is illegal at compile time
public int foo(final int a) {
 
  //....
  return ++a;
}

//Changing final references is also illegal
public void bar(final SomeObj A) {

  SomeObj B = new SomeObj();
  //....
  A = B;
}

//however, manipulating objects is still legal
public void baz(final SomeObj B) {

  int x = 42;
  //....
  B.y = x;
}


Another thing to keep in mind is that using final does not alter the method signature when resolving a call, so foo(int a) and foo(final int a) are identical from an overloading perspective.
DemonWasp




PostPosted: Wed May 20, 2009 6:48 pm   Post subject: RE:final?

It's also worthy of note that in Java, the String class is final itself. That means that even though it's technically an object, you can't change it once it's created - all the mutator methods create a new String.
matt271




PostPosted: Wed May 20, 2009 11:44 pm   Post subject: RE:final?

ok i get it. ty ty
Display posts from previous:   
   Index -> Programming, Java -> Java Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 4 Posts ]
Jump to:   


Style:  
Search: