今天在抽取JDBCUtil工具类的时候原本想写
static {
try {
Properties properties=new Properties();
InputStream is=JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
properties.load(is);
static String classDriver=properties.getProperty("classDriver");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但是第六句话报错:Illegal modifier for the variable str; only final is permitted
出现这样的错,一般都是在方法中声明变量时提示,原因是用了public,private,static等修饰词去修饰方法内部变量,然而在java类的方法里声明变量时,他是只能用final修饰(only final is permitted)(或者不加修饰)。除此之外不能用其他的修饰符修饰,包括static也会报同样的错误。
public,private等是声明作用域的。方法内部定义的变量(只能在方法内部使用),在里面声明作用域无意义,也禁止声明。
但是在方法外面,是可以的。
所以只能写成如下代码:
static String classDriver=null;
static String url=null;
static String user=null;
static String password=null;
static {
try {
Properties properties=new Properties();
InputStream is=JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
properties.load(is);
classDriver=properties.getProperty("classDriver");
url=properties.getProperty("url");
user=properties.getProperty("user");
password=properties.getProperty("password");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
原文:https://blog.csdn.net/u014745465/article/details/48766799