Re: How to initialise a final static String array
Cecil Westerhof wrote:
I want to use final for my static variables. I now do for example:
private static final Connection conn;
DO NOT USE TAB CHARACTERS TO INDENT USENET POSTS.
Use spaces, up to four per indent level.
private static final Combo container;
and
static {
Connection tempConn;
Statement tempStmt;
try {
Class.forName("org.h2.Driver");
tempConn = DriverManager.getConnection(
"jdbc:h2:tcp://localhost/~/databases/stock", "sa", "");
tempStmt = tempConn.createStatement();
} catch (Exception e) {
tempConn = null;
tempStmt = null;
}
conn = tempConn;
stmt = tempStmt;
Static JDBC connections, and especially static JDBC statements, are a very bad
idea.
Very bad.
Statements should be local in scope, not even instance level. (Usually.) Even
connections should only be instance members if you have rather short-lived
objects holding them.
and
if (conn == null) {
throw new Exception("Could not initialise");
What kind of exception /should/ you throw? Not 'Exception'.
}
The only problem I have is with my array of String.
I now have:
private static final String[] titles = {
"Stock",
"Number",
"Dare",
"Container"
};
Because when I put it in the static block I get an error.
That doesn't make sense. It's a perfectly legitimate initialization.
Beside this I can execute a statement like:
titles[0] = "changed";
Can I get the initialisation in the static part? And in such a way
that the elements can not be changed?
First tell us what you did that didn't work.
http://sscce.org/
--
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg