hutool中的threadutil_Hutool之类处理相关工具——ClassUtil

Hutool的ClassUtil工具类提供便捷的反射操作,如scanPackage方法用于扫描指定包及其子包下的所有类,适用于类扫描和依赖注入。其他方法包括getMethods获取方法名,parse进行类型转换,以及newInstance和cloneObj实现对象实例化和克隆。这些功能简化了Java中的常见反射任务。
摘要由CSDN通过智能技术生成

类处理工具 ClassUtil

这个工具主要是封装了一些反射的方法,使调用更加方便。而这个类中最有用的方法是scanPackage方法,这个方法会扫描classpath下所有类,这个在Spring中是特性之一,主要为Hulu框架中类扫描的一个基础。下面介绍下这个类中的方法。

1.scanPackage方法

此方法唯一的参数是包的名称,返回结果为此包以及子包下所有的类。方法使用很简单,但是过程复杂一些,包扫面首先会调用 getClassPaths方法获得ClassPath,然后扫描ClassPath,如果是目录,扫描目录下的类文件,或者jar文件。如果是jar包,则直接从jar包中获取类名。这个方法的作用显而易见,就是要找出所有的类,在Spring中用于依赖注入,我在Hulu中则用于找到Action类。当然,你也可以传一个ClassFilter对象,用于过滤不需要的类。

2.getMethods方法

此方法同Class对象的·getMethods·方法,只不过只返回方法的名称(字符串),封装非常简单。

3.getClassPaths方法

此方法是获得当前线程的ClassPath,核心是Thread.currentThread().getContextClassLoader().getResources的调用。

4.getJavaClassPaths方法

此方法用于获得java的系统变量定义的ClassPath。

5.parse方法。

此方法封装了强制类型转换,首先会调用对象本身的cast方法,失败则尝试是否为基本类型(int,long,double,float等),再失败则尝试日期、数字和字节流,总之这是一个包容性较好的类型转换方法,省去我们在不知道类型的情况下多次尝试的繁琐。

6.parseBasic方法

此方法被parse方法调用,专门用于将字符集串转换为基本类型的对象(Integer,Double等等)。可以说这是一个一站式的转换方法,JDK的方法名太别扭了,例如你要转换成Long,你得调用Long.parseLong方法,直接Long.parse不就行了……真搞不懂,所以才有了这个方法。

7.castToPrimitive方法

这个方法比较别扭,就是把例如Integer类变成int.class,貌似没啥用处,忘了哪里用了,如果你能用到,就太好了。

8.getClassLoader和getContextClassLoader方法

后者只是获得当前线程的ClassLoader,前者在获取失败的时候获取ClassUtil这个类的ClassLoader。

9. newInstance方法

实例化对象,封装了Class.forName(clazz).newInstance()方法。

10.cloneObj方法

克隆对象。对于有些对象没有实现Cloneable接口的对象想克隆下真是费劲,例如封装Redis客户端的时候,配置对象想克隆下基本不可能,于是写了这个方法,原理是使用ObjectOutputStream复制对象流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值