如何在 java 中多次执行静态块

How to execute a static block for multiple times in java

我给了一个任务,每 20 秒执行一次静态块。我有一个由静态块组成的 class。

public class Hello{
      static{
        System.out.println("helloo...");
      }
}

我知道加载 class 时会执行静态块。

但是我想知道有什么方法可以多次执行静态块以及如何执行?

加载 class 时静态块 运行s,你不能 运行 多次。

与您想要多次执行的任何其他代码块一样,您可以使用循环或更好的方法来创建静态函数并多次调用它:

public class Hello{
    public static void hello() {
        System.out.println("helloo...");
    }

    public void someMethod() {

        for(int i= 0; i < 10; i++) {
            hello();
        }
     }
}

你不能。当 class 加载时,它只会 运行 一次。您还有一次机会可以在 class.

中写入任意数量的静态块

[https://beginnersbook.com/2013/04/java-static-class-block-methods-variables/][1]

可以使用自定义 Class 加载程序来执行静态块。

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();              
            }
            }
        }

Refer Oracle Document for URLClassLoader