如何修改静态代码块
通过反射, 我们可以修改成员变量
但是, 如何修改静态代码块?
比如以下代码
Java code
/**
*
*/
package pkg;
import java.util.Scanner;
public class HelloWorld {
private static int bbb;
static {
bbb = 2;
System.out.println("in static");
}
/**
* @param args
*/
public static void main(String[] args) {
if (args.length == 0) {
Scanner scanner = new Scanner(System.in);
String tmp = null;
tmp = scanner.next();
while (!tmp.equals("exit")) {
System.out.println(tmp);
tmp = scanner.next();
}
}
}
public void foo(String aaa) {
System.out.println("in foo.");
}
public static void printBBB() {
System.out.println(bbb);
}
}
------解决方案--------------------
第一次主动使用一个类的时候,静态代码块肯定是要执行的。
------解决方案--------------------
不知道你要干嘛??
你知道JDK1.6有个新特性吗??
可以动态生成新的类。 这个也许可以帮助到你。
比如你上面的java文件static断先空着,根据运行时把static内填了。
然后再编译成class
------解决方案--------------------static块 不就是这个作用吗。应该没法不让它执行。
注册也就是初始化几个成员变量,
不怕麻烦的话,可以通过反射挨个的置空。
------解决方案--------------------静态代码 就是初始化执行的啊。如果需求是这样的,可以考虑换个思路啊。
sql驱动(oracle,mysql等)在加载过程中是指定对应的数据库驱动注册啊。
智商有限,有点不理解 -。-||
------解决方案--------------------想在加载类前改写静态代码块吗,关注下先
------解决方案--------------------