请参考以下代码.当我运行代码时,我能够更改最终的非静态变量的值.但是,如果我尝试更改最终静态变量的值,那么它会抛出java.lang.IllegalAccessException.
我的问题是为什么它不会在非静态最终变量的情况下抛出异常,反之亦然.为什么不同?
import java.lang.reflect.Field;
import java.util.Random;
public class FinalReflection {
final static int stmark = computeRandom();
final int inmark = computeRandom();
public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
FinalReflection obj = new FinalReflection();
System.out.println(FinalReflection.stmark);
System.out.println(obj.inmark);
Field staticFinalField = FinalReflection.class.getDeclaredField("stmark");
Field instanceFinalField = FinalReflection.class.getDeclaredField("inmark");
staticFinalField.setAccessible(true);
instanceFinalField.setAccessible(true);
instanceFinalField.set(obj, 100);
System.out.println(obj.inmark);
staticFinalField.set(FinalReflection.class, 101);
System.out.println(FinalReflection.stmark);
}
private static int computeRandom() {
return new Random().nextInt(5);
}
}
Run Code Online (Sandbox Code Playgroud) 我们的团队昨天发布了我们系统的新版本,我们遇到了存储过程的一些问题.简而言之,我们不得不上传旧的存储过程来解决问题.
我现在已经被赋予了在发布构建之前自动备份数据库的存储过程的任务.我已经浏览了很多站点,我已经看过生成脚本,制作批处理文件,执行完整备份和调度任务等,但这些解决方案都不会自动备份存储过程.
在此情况下,任何帮助将非常感谢提前.
最好的问候Ryan
sql build-automation automation stored-procedures sql-server-2008