commons-lang3的反射工具类之ClassUtils

    今天我们开始学习,commons-lang3包下的反射工具类,大家在开发web项目时,用到的框架,spring,mybatis,hibernate,以及现在已经淡出大家视野的struts等,底层的原理都是使用了java反射机制,所谓java反射,就是把java类,接口,成员变量,方法等都抽象成对象的机制,而commons-lang3包下提供的工具类,更简单,容易的操作这些对象,我们就用几个代码示例,来了解下ClassUtils类。

ClassUtils

    是取得类信息的工具类,例如,包名,类名,所继承的父类,所实现的接口信息等。

 

常用方法

  • 包名取得

        使用ClassUtils#getPackageName方法,参数可以传入Class类型或者String类型

package ClassUtilsTest;

import org.apache.commons.lang3.ClassUtils;

public class GetPackageNameTest{

    public static void main(String[] args) {

        System.err.println(ClassUtils.getPackageName(String.class));
        System.err.println(ClassUtils.getPackageName("java.lang.String"));

    }

}

输出结果

java.lang
java.lang

 

  • 类名取得

        使用ClassUtils#getShortClassName方法,参数可以传入Class类型或者String类型

package ClassUtilsTest;

import org.apache.commons.lang3.ClassUtils;

public class GetShortClassNameTest {

    public static void main(String[] args) {

        System.err.println(ClassUtils.getShortClassName(String.class));
        System.err.println(ClassUtils.getShortClassName("java.lang.String"));

    }

}

输出结果

String
String

 

  • 实现的所有接口名取得(带包名)

        包括父接口实现的接口名,使用ClassUtils#getAllInterfaces方法,参数可以传入Class类型

package ClassUtilsTest;

import java.util.ArrayList;

import org.apache.commons.lang3.ClassUtils;

public class GetAllInterfacesTest {

    public static void main(String[] args) {

        ClassUtils.getAllInterfaces(ArrayList.class).forEach(System.err::println);

    }

}

输出结果

interface java.util.List
interface java.util.Collection
interface java.lang.Iterable
interface java.util.RandomAccess
interface java.lang.Cloneable
interface java.io.Serializable

 

  • 继承父类名取得(带包名)

        包括父类继承的父类名,使用ClassUtils#getAllSuperclasses方法,参数可以传入Class类型

package ClassUtilsTest;

import java.util.ArrayList;

import org.apache.commons.lang3.ClassUtils;

public class GetAllSuperclassesTest {

    public static void main(String[] args) {

        ClassUtils.getAllSuperclasses(ArrayList.class).forEach(System.err::println);

    }

}

输出结果

class java.util.AbstractList
class java.util.AbstractCollection
class java.lang.Object

        当我们写框架,工具类的时候能使用到这些方法,下篇见。

你可能感兴趣的:(apache工具类)