我给了每20秒执行一次静态块的任务。我有一个包含静态块的类。
public class Hello{
static{
System.out.println("helloo...");
}
}
我知道在加载类时会执行静态块。
但是我想知道有什么方法可以多次执行静态块以及如何执行?
答案 0 :(得分:0)
静态块在类加载时运行,不能多次运行。
答案 1 :(得分:0)
与要执行多次的任何其他代码块一样,您可以使用循环或更好的方法来创建静态函数并多次调用:
public class Hello{
public static void hello() {
System.out.println("helloo...");
}
public void someMethod() {
for(int i= 0; i < 10; i++) {
hello();
}
}
}
答案 2 :(得分:0)
您不能。当类加载时,它将仅运行一次。您还可以在一个类中编写任意数量的静态块。
[https://beginnersbook.com/2013/04/java-static-class-block-methods-variables/][1]
答案 3 :(得分:0)
使用自定义类加载器可以实现执行静态块。
ClassReload.java
Class<?> load = ClassLoader.getSystemClassLoader().loadClass("com.Hello");
//Assume Hello class is in "com" package
load.newInstance().toString();
URL[] urls = { load.getProtectionDomain().getCodeSource().getLocation() };
ClassLoader delegateParent = load.getClassLoader().getParent();
try (URLClassLoader cl = new URLClassLoader(urls, delegateParent)) {
Class<?> reloaded = cl.loadClass(load.getName());
reloaded.newInstance().toString();
}
}
}