Illegal modifier for the variable str; only final is permitted的错误的深入理解

今天在抽取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 
 

你可能感兴趣的:(java)