匿名内部类形参_匿名内部类_如何调用匿名内部类(2)

电脑杂谈  发布时间:2017-02-06 11:18:13  来源:网络整理

{

//存在Connection的数组

private PoolConn[] poolConns;

//连接池的最小连接数

private int min;

//连接池的最大连接数

private int max;

//一个连接的最大使用次数

private int maxUseCount;

//一个连接的最大空闲时间

private long maxTimeout;

//同一时间的Connection最大使用个数

private int maxConns;

//定时器

private Timer timer;

public boolean init()

{

try

{

……

this.poolConns = new PoolConn[this.min];

for(int i=0;i<this.min;i++)

{

PoolConn poolConn = new PoolConn();

poolConn.conn = ConnectionManager.getConnection();

poolConn.isUse = false;

poolConn.lastAccess = new Date().getTime();

poolConn.useCount = 0;

this.poolConns[i] = poolConn;

}

……

return true;

}

catch(Exception e)

{

return false;

}

}

……

private class PoolConn

{

public Connection conn;

public boolean isUse;

public long lastAccess;

public int useCount;

}

}

因为本文不是专题来讲述连接池的,所以在上面的代码中绝大部分的内容被省略掉了。PoolConn类不大可能被除了ConnectionPool类的其他类使用到,把它作为ConnectionPool的私有内部类不会影响到其他类。同时,我们可以看到,使用了内部类,使得我们可以将该内部类的数据公开,ConnectionPool类可以直接操作PoolConn类的数据成员,避免了因set和get方法带来的麻烦。

上面的一个例子,是使用内部类使得你的代码得到简化和方便。还有些情况下,你可能要避免你的类被除了它的外部类以外的类使用到,这时候你却不得不使用内部类来解决问题。

场景二:解决一些非面向对象的语句块

这些语句块包括if…else if…else语句,case语句,等等。这些语句都不是面向对象的,给我们造成了系统的扩展上的麻烦。我们可以看看,在模式中,有多少模式是用来解决由if语句带来的扩展性的问题。

Java编程中还有一个困扰我们的问题,那就是try…catch…问题,特别是在JDBC编程过程中。请看下面的代码:

……

try

{

String[] divisionData = null;

conn = manager.getInstance().getConnection();

stmt = (OracleCallableStatement)conn.prepareCall("{ Call PM_GET_PRODUCT.HEADER_DIVISION(?, ?) }");

stmt.setLong(1 ,productId.longValue() );

stmt.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR); ;


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-30869-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...