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();这段代码 ,报如下错误
![](https://img-blog.csdn.net/20161210093038934?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2NkbjExNzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
} 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类型,后来想到应该是生命周期的原因,因为方法内定义的变量是局部变量,离开该方法,变量就失去了作用,也就会自动被消除,而内部类却不会离开它所在方法就失去作用,它有更广的生命周期。
//数据库连接池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类型,后来想到应该是生命周期的原因,因为方法内定义的变量是局部变量,离开该方法,变量就失去了作用,也就会自动被消除,而内部类却不会离开它所在方法就失去作用,它有更广的生命周期。
相关文章推荐
- Java内部类引用外部类中的局部变量为何必须是final问题解析
- Java内部类引用外部类中的局部变量为何必须是final?
- Java内部类引用外部类中的局部变量为何必须是final问题解析
- 黑马程序员--Java内部类引用外部类中的局部变量为何必须是final问题解析
- Java内部类引用外部类中的局部变量为何必须是final问题解析
- Java内部类引用外部类中的局部变量为何必须是final问题解析
- java内部类引用外部类的变量时必须是final变量
- 一个注意事项:内部类引用的外部变量必须是final的
- 局部内部类引用外部类中的局部变量必须是final属性的!
- 内部类如果要引用外部类的变量,则该变量必须为final
- 局部内部类引用外部类中的局部变量必须是final属性的!
- 内部类引用外部类中的局部变量时,该变量需final
- 局部内部类引用外部类中的局部变量必须是final属性的!
- 局部内部类引用外部类中的局部变量必须是final属性的!
- 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例
- 匿名内部类访问外部类中的局部变量必须是final属性
- 关于匿名内部类和局部内部类的外部引用必须是final的疑问
- 【Java】内部类访问的外部变量定义成final (数据保持一致,外部修改后无法通知内部,编译的时候会通过构造方法传进来) Java内部类一般访问不了外部变量
- 【面试对宝典40题的解释】匿名内部类访问外部类中的局部变量必须是final属性
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?