您的位置:首页 > 编程语言 > Java开发

java内部类引用外部类中的变量 必须是final

2016-12-10 09:27 399 查看
@Test
//数据库连接池DBCP
public void testDBCP(){

//创建连接池
BasicDataSource ds=new BasicDataSource();
//给连接池添加必要的属性
//可以将这些属性去掉set首字母小写,写在.properties文件中
ds.setUsername("root");
ds.setPassword("");
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql:///jsd");
//初始连接数
ds.setInitialSize(5);
//指定最大连接数,同一时刻可以向数据库申请的连接数
ds.setMaxActive(5);
//指定最小连接数:在数据库连接池中保存的最少的空闲的连接数量 
ds.setMinIdle(5);
//等待数据库连接池,连接最长时间 ,单位为毫秒,超出该时间 将抛出异常
ds.setMaxWait(1000*5);

try {
String sql="select * from person where id=2";
//用5个线程,测试5秒后,MaxWait()的效果 
Connection con=ds.getConnection();
con=ds.getConnection();
con=ds.getConnection();
con=ds.getConnection();
new Thread(){
public void run(){
try {

Connection con=ds.getConnection();

//Connection con=ds.getConnection();这段代码 ,报如下错误



} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}.start();

PreparedStatement ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
<
4000
/span>if(rs.next()){
System.out.println(rs.getString("name"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

-----------------------------

根据查找资料:百度:内部类访问外部变量;

如果内部类调用了外部类中的变量,那么该变量必须申明为final类型,后来想到应该是生命周期的原因,因为方法内定义的变量是局部变量,离开该方法,变量就失去了作用,也就会自动被消除,而内部类却不会离开它所在方法就失去作用,它有更广的生命周期。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐