Java 静态全局对象
我有一个静态方法的类 建立联系 该方法返回用于进一步JDBC操作的连接对象。是否有可能创建一个全局连接字段,并使用此方法的结果“return”?我想在我需要的任何地方使用这个领域Java 静态全局对象,java,field,global,Java,Field,Global,我有一个静态方法的类 建立联系 该方法返回用于进一步JDBC操作的连接对象。是否有可能创建一个全局连接字段,并使用此方法的结果“return”?我想在我需要的任何地方使用这个领域 public class Connection { public static Connection makeConnection() throws IOException, SQLException { try { Class.forName
public class Connection
{
public static Connection makeConnection() throws IOException, SQLException
{
try
{
Class.forName("org.postgresql.Driver");
Properties props = new Properties();
FileInputStream in = new FileInputStream("dataBase.properties");
props.load(in);
in.close();
String drivers = props.getProperty("jdbc.drivers");
if(drivers != null) System.setProperty("jdbc.drivers", drivers);
String url = props.getProperty("jdbc.url");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password");
return DriverManager.getConnection(url, username,password);
}
catch (ClassNotFoundException e)
{
return null;
}
catch(IOException e)
{
return null;
}
catch(SQLException e)
{
return null;
}
}
}
您可以这样做:
class Foo {
public static Connection conn = bar();
private static Connection bar() {
...
}
}
这就是你想要的吗?这是可能的,但是连接工厂比连接好。 但是,静态变量对于连接的生命周期控制不是一个好主意 一个好的连接池将为您解决许多问题,例如并发访问、超时检测、回收活动连接、自动清除死连接。这不是处理连接的方法。。。但它可能会让您了解如何解决类似的问题:
public class Wombat
{
public static Wombat getWombat ()
{
if (theWombat == null)
theWombat = new Wombat ();
return theWombat;
}
private static Wombat theWombat= null;
}
可以在静态初始值设定项块中初始化静态变量:
class Foo {
public static Connection conn;
static {
try {
conn = makeConnection();
} catch(...) {
...
}
}
}
你的意思是像
类Foo{static Connection conn=bar();static Connection bar(){…}}
?如果全局是指类的静态,那么是的。我必须指出,这是一个非常糟糕的设计,JDBC连接对象并不是以这种方式构建的。这很好,但编译器返回错误,因为未保护的异常符合conn声明。我是否遗漏了什么,或者这是死圈之王?如果您有bar()
捕获异常并返回null
或抛出运行时异常以停止程序,这将起作用。