java怎么编程class_怎么在java项目中对Class实现静默加载

怎么在java项目中对Class实现静默加载

发布时间:2020-12-08 17:11:55

来源:亿速云

阅读:69

作者:Leah

这篇文章将为大家详细讲解有关怎么在java项目中对Class实现静默加载,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一般情况下,我们加载一个Class的时候会使用Class.forName(String name)方法,该方法会返回一个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.

此时控制台会输出我们在静态代码块中打印的内容,这样就证明了了在使用Class.forName(String name)会触发静态代码块,那么,要实现静默加载,我们就不能用这种方式了,我们可以使用ClassLoader的loadClass(String name)方法进行加载,该方法仅会加载类而不会触发静态代码块,同样的编写测试方法进行测试。

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

我们发现,在控制台中仅输出了我们打印的类名信息,而静态代码块没有执行,除此之外,其实我们还可以使用Class.forName(String name)的重写方法forName(String name, boolean initialize, ClassLoader loader) ,同样可以达到静默加载的效果。

关于怎么在java项目中对Class实现静默加载就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值