通过反射, 我们可以修改成员变量
但是, 如何修改静态代码块?
比如以下代码
- 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等)在加载过程中是指定对应的数据库驱动注册啊。
智商有限,有点不理解 -。-||
------解决方案--------------------------------------------------------
想在加载类前改写静态代码块吗,关注下先
------解决方案--------------------------------------------------------