为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

弑天下 2021-10-27 10:29:39
我给了一个任务,每 20 秒执行一次静态块。我有一个由静态块组成的类。public class Hello{      static{        System.out.println("helloo...");      }}我知道静态块在类加载时执行。但我想知道有没有办法多次执行静态块以及如何执行?
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

执行静态块可以通过使用自定义类加载器来实现。


类重载文件


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

            }

            }

        }


查看完整回答
反对 回复 2021-10-27
?
噜噜哒

TA贡献1784条经验 获得超7个赞

静态块在类加载时运行,您不能多次运行它。


查看完整回答
反对 回复 2021-10-27
?
Qyouu

TA贡献1786条经验 获得超11个赞

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


public class Hello{

    public static void hello() {

        System.out.println("helloo...");

    }


    public void someMethod() {


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

            hello();

        }

     }

}


查看完整回答
反对 回复 2021-10-27
  • 3 回答
  • 0 关注
  • 491 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信