Question about var initialization... 2006-10-18 - By Ian Vellosa
Back Hi Vadim
My personal preference is for the first option.
In the example you have given it does not make a huge difference, but if the class you are initialising does something special you can find yourself having strange errors. For example:
class MyDataLoader { DataSource dataSource = ServiceLocater.getService("jdbc/mydatabase");
MyDataLoader() { super(); }
public List getSomethingFromDB() ... }
Now in here if there is a problem loading the DataSource from the service locater, i.e. a naming exception your class will not be created. Even worse the error you will get returned from the JVM is that your class MyDataLoader was not found (well it couldn't be created!) Seeing this error you will more than likely spend a day checking and re checking your class path.
Now if you were to do something like this:
class MyDataLoader { DataSource dataSource;
MyDataLoader() { super(); try { dataSource = ServiceLocater.getService("jdbc/mydatabase"); } catch ... }
public List getSomethingFromDB() ... }
knowing that there is a chance your service locater will throw an exception, you can have a meaningful error message from the constructor. Even if you decide against this you would have null pointer exceptions when calling the getSomethingFromDB method, as it would have no DataSource to connect via.
I hope that this helps
IV
--- Vadim Vera <vadim.vera@(protected)> wrote:
> Hi list, my question isn't J2EE related... > > I'm wondering if the vars initialization (class and instance vars) > is for consistency (I know Java has initialization rules when var > creation take place) or just a type-style; for example, I've > analyzed code from some sites (Oracle samples, IBM, Apache, > TheServerSide.com) and they initializes the vars in some classes > and in others not...it's just a "make sure" question... > > Example 1: > // imports ommited > class Some { > private List list = new ArrayList(); > > Some() { > } > } > > Example 2: > // imports ommited > class Some { > private List list; > > Some() { > list = new ArrayList(); > } > } > > One initializes on declaration, the other inside constructor, I > don't know the difference; I must say I prefer the first one. > Thanks in advance... > >
=========================================================================== To unsubscribe, send email to listserv@(protected) and include in the body of the message "signoff J2EE-INTEREST". For general help, send email to listserv@(protected) and include in the body of the message "help".
|
|