Java Reference
In-Depth Information
andcanbesubsequentlyinitializedbyassigningvaluestothemintheirdeclarationsvia
instance field initializers
; for example,
int numDoors = 4;
.
Anotheraspectofinitializationthat'salreadybeendiscussedistheconstructor,which
is used to initialize an object, typically by assigning values to various instance fields,
butisalsocapableofexecutingarbitrarycode,suchascodethatopensafileandreads
the file's contents.
Javaprovidestwoadditionalinitializationfeatures:classinitializersandinstanceini-
tializers. After introducing you to these features, this section discusses the order in
which all of Java's initializers perform their work.
Class Initializers
Constructorsperforminitializationtasksforobjects.Theircounterpartfromaclassini-
tialization perspective is the class initializer.
A
class initializer
isa
static
-prefixedblockthatisintroducedintoaclassbody.It
isusedtoinitializealoadedclassviaasequenceofstatements.Forexample,Ionceused
aclassinitializertoloadacustomdatabasedriverclass.
Listing2-16
showstheloading
details.
Listing 2-16.
Loading a database driver via a class initializer
class JDBCFilterDriver implements Driver
{
static private Driver d;
static
{
// Attempt to load JDBC-ODBC Bridge Driver and re-
gister that
// driver.
try
{
Class
c
=
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
d = (Driver) c.newInstance();
DriverManager.registerDriver(new
JDBCFilter-
Driver());
}
catch (Exception e)