java实现静默加载Class示例代码
前言 本文主要介绍了关于java静默加载Class的相关内容,之所以有这篇文章,是因为有时候在开发的时候,我们有这样的场景,我们只想得到一个Class的基本信息,但是并不想触发相关的静态代码块,在之前的一篇《JAVA扫描包》文章中就用到了这种方式,我将其称之为静默加载,如果有专业的叫法,欢迎指正。 一般情况下,我们加载一个Class的时候会使用 我们先来编写一个只包含静态代码块的Bean类。 package com.jinggujin.classloader; public class Bean { static { System.err.println("static code block."); } } 使用err流是为了让信息及时输出,使用out会有缓存,可能会导致输出信息顺序错乱 然后编写测试方法进行测试。 package test; import org.junit.Test; public class ClassLoaderTest { @Test public void test() throws Exception { Class.forName("com.jinggujin.classloader.Bean"); } } 运行观察控制台输出: static code block. 此时控制台会输出我们在静态代码块中打印的内容,这样就证明了了在使用 package test; import org.junit.Test; public class ClassLoaderTest { @Test public void test() throws Exception { Class<?> clazz = Thread.currentThread().getContextClassLoader().loadClass("com.jinggujin.classloader.Bean"); System.err.println(clazz.getName()); } } 运行观察控制台输出: com.jinggujin.classloader.Bean 我们发现,在控制台中仅输出了我们打印的类名信息,而静态代码块没有执行,除此之外,其实我们还可以使用 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |