Java Tips -=-= Library =-=- Apache Commons Lang Part 4
- 2017年12月11日
- CATEGORY- 1. 技術力{技術情報}
前回に引き続き【Apache Commons Lang】をご紹介いたします。
今回は、
CharUtils
class
のサンプルをご紹介します。
Apache Commons Langとは
Apache Commons Lang(アパッチ・コモンズ・ラング)は、ApacheのトッププロジェクトであるApache Commonsにある、Javaのjava.langパッケージを拡張するライブラリである。
– License:
Apache 2.0
– Home Page:
http://commons.apache.org/proper/commons-lang/
– Maven repository:
https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
– Maven dependency
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.6</version> </dependency>
– Java doc:
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/package-summary.html
ClassPathUtils
このクラスは、クラスパスに関しての操作を提供します。このクラスのメソッドはnullの入力を許可していません。
– static String toFullyQualifiedName(Class> context, String resourceName)
– static String toFullyQualifiedName(Package context, String resourceName)
contextに関連したresouceNameの修飾された完全な名称を返します。
/** * Test for * {@link ClassPathUtils#toFullyQualifiedName(Class, String)} * {@link ClassPathUtils#toFullyQualifiedName(Package, String)} */ @Test public void testToFullyQualifiedName() { assertThat(ClassPathUtils.toFullyQualifiedName(String.class, "String.properties"), is("java.lang.String.properties")); assertThat(ClassPathUtils.toFullyQualifiedName(String.class.getPackage(), "String.properties"), is("java.lang.String.properties")); }
– static String toFullyQualifiedPath(Class> context, String resourceName)
– static String toFullyQualifiedPath(Package context, String resourceName)
contextに関連したresouceNameの修飾された完全なパスを返します。
/** * Test for {@link ClassPathUtils#toFullyQualifiedPath(Class, String)} * {@link ClassPathUtils#toFullyQualifiedPath(Package, String)} */ @Test public void testToFullyQualifiedPath() { assertThat(ClassPathUtils.toFullyQualifiedPath(String.class, "String.properties"), is("java/lang/String.properties")); assertThat(ClassPathUtils.toFullyQualifiedPath(String.class.getPackage(), "String.properties"), is("java/lang/String.properties")); }
ClassUtils
リフレクションを使用せずに、クラスで動作します。このクラスはnull入力を正常に処理しようとします。
– static List
与えられたClassオブジェクトListをクラス名Listに変換します。
/** * {@link ClassUtils#convertClassesToClassNames(java.util.List)} */ @Test public void testConvertClassesToClassNames() { final List<Class<?>> classList = Arrays.asList(String.class, Integer.class); final List<String> nameList = ClassUtils.convertClassesToClassNames(classList); assertThat(nameList, hasItems("java.lang.String", "java.lang.Integer")); }
– static List
与えられたクラス名ListをClassオブジェクトListに変換します。
/** * {@link ClassUtils#convertClassNamesToClasses(List)} */ @Test public void testConvertClassNamesToClasses() { final List<String> nameList = Arrays.asList("java.lang.String", "java.lang.Integer"); final List<Class<?>> classList = ClassUtils.convertClassNamesToClasses(nameList); assertThat(classList, hasItems(String.class, Integer.class)); }
– static String getAbbreviatedName(Class> cls, int len)
– static String getAbbreviatedName(String className, int len)
クラスの略称を指定された桁数ないで作成します。
/** * {@link ClassUtils#getAbbreviatedName(Class, int)} * {@link ClassUtils#getAbbreviatedName(String, int)} */ @Test public void testGetAbbreviatedName() { assertThat(ClassUtils.getAbbreviatedName(String.class, 10), is("j.l.String")); assertThat(ClassUtils.getAbbreviatedName("java.lang.String", 10), is("j.l.String")); }
– static List
クラスとそのスーパークラスによって実装されている全てのインターフェースをListで返します。
private interface TestInterface { } private abstract class TestAbstract { } private class TestClass extends TestAbstract implements TestInterface { } /** * {@link ClassUtils#getAllInterfaces(Class)} */ @Test public void testGetAllInterfaces() { assertThat(ClassUtils.getAllInterfaces(TestClass.class), hasItem(TestInterface.class)); }
– static List
特定クラスのスーパークラスを全てListで返します。
/** * {@link ClassUtils#getAllInterfaces(Class)} */ @Test public void testGetAllSuperClass() { assertThat(ClassUtils.getAllSuperclasses(TestClass.class), hasItem(TestAbstract.class)); }
– static Class> getClass(ClassLoader classLoader, String className)
– static Class> getClass(ClassLoader classLoader, String className, boolean initialize)
– static Class> getClass(String className)
– static Class> getClass(String className, boolean initialize)
classNameからクラスを生成し、返します。
/** * {@link ClassUtils#getClass(ClassLoader, String)} * {@link ClassUtils#getClass(ClassLoader, String, boolean)} * {@link ClassUtils#getClass(String)} * {@link ClassUtils#getClass(String, boolean))} */ @Test public void testGetClass() throws Exception { assertTrue(ClassUtils.getClass(getClass().getClassLoader(), "java.lang.String").equals(String.class)); assertTrue(ClassUtils.getClass(getClass().getClassLoader(), "java.lang.String", true).equals(String.class)); assertTrue(ClassUtils.getClass("java.lang.String").equals(String.class)); assertTrue(ClassUtils.getClass("java.lang.String", true).equals(String.class)); }
– static String getPackageCanonicalName(Class> cls)
– static String getPackageCanonicalName(Object object, String valueIfNull)
– static String getPackageCanonicalName(String canonicalName)
クラス(オブジェクト、文字列)の正規名からパッケージ名を取得します。
/** * {@link ClassUtils#getPackageCanonicalName(Class)} * {@link ClassUtils#getPackageCanonicalName(String)} */ @Test public void testGetPackageCanonicalName() { assertThat(ClassUtils.getPackageCanonicalName(String.class), is("java.lang")); assertThat(ClassUtils.getPackageCanonicalName("java.lang.String"), is("java.lang")); }
– static String getPackageName(Class> cls)
– static String getPackageName(Object object, String valueIfNull)
– static String getPackageName(String className)
クラス(オブジェクト、文字列)からパッケージ名を取得します。
/** * {@link ClassUtils#getPackageName(Class)} * {@link ClassUtils#getPackageName(String)} */ @Test public void testGetPackageName() { assertThat(ClassUtils.getPackageName(String.class), is("java.lang")); assertThat(ClassUtils.getPackageName("java.lang.String"), is("java.lang")); }
– static Method getPublicMethod(Class> cls, String methodName, Class>… parameterTypes)
クラスからMethodオブジェクトを生成します。
/** * {@link ClassUtils#getPublicMethod(Class, String, Class...)} */ public void testGetPublicMethod() throws Exception { List<String> list = Collections.emptyList(); Method method = ClassUtils.getPublicMethod(list.getClass(), "isEmpty", new Class[0]); assertThat(method.invoke(list, new Object[0]), is(true)); }
– static String getShortCanonicalName(Class> cls)
– static String getShortCanonicalName(Object object, String valueIfNull)
– static String getShortCanonicalName(String canonicalName)
クラス(オブジェクト、文字列)から正規名からパッケージを除外した名称を返します。
/** * {@link ClassUtils#getShortCanonicalName(Class)} * {@link ClassUtils#getShortCanonicalName(String)} */ @Test public void testGetShortCanonicalName() { assertThat(ClassUtils.getShortCanonicalName(String.class), is("String")); assertThat(ClassUtils.getShortCanonicalName("java.lang.String"), is("String")); }
– static String getShortClassName(Class> cls)
– static String getShortClassName(Object object, String valueIfNull)
– static String getShortClassName(String className)
クラス(オブジェクト、文字列)から正規名からパッケージを除外したクラス名称を返します。
/** * {@link ClassUtils#getShortClassName(Class)} * {@link ClassUtils#getShortClassName(String)} */ @Test public void testGetShortClassName() { assertThat(ClassUtils.getShortClassName(String.class), is("String")); assertThat(ClassUtils.getShortClassName("java.lang.String"), is("String")); }
– static String getSimpleName(Class> cls)
– static String getSimpleName(Object object, String valueIfNull)
aClass.getSimpleName()のNullセーフバージョン
/** * {@link ClassUtils#getSimpleName(Class)} * {@link ClassUtils#getSimpleName(Object, String)} */ @Test public void testGetSimpleName() { assertThat(ClassUtils.getSimpleName(String.class), is("String")); assertThat(ClassUtils.getSimpleName(new String(), "nullValue"), is("String")); }
– static boolean isInnerClass(Class> cls)
指定されたクラスが内部クラスであるかを返す。
/** * {@link ClassUtils#isInnerClass(Class)} */ @Test public void testIsInnerClass() { assertThat(ClassUtils.isInnerClass(InnerClass.class), is(true)); assertThat(ClassUtils.isInnerClass(String.class), is(false)); } class InnerClass { }
– static boolean isPrimitiveOrWrapper(Class> type)
– static boolean isPrimitiveWrapper(Class> type)
指定されたクラスが、プリミティブラッパークラスであるかを返す。
/** * {@link ClassUtils#isPrimitiveWrapper(Class)} * {@link ClassUtils#isPrimitiveOrWrapper(Class)} */ @Test public void testIsPrimitiveOrWrapper() { assertThat(ClassUtils.isPrimitiveWrapper(Integer.class), is(true)); assertThat(ClassUtils.isPrimitiveWrapper(ClassUtils.class), is(false)); assertThat(ClassUtils.isPrimitiveOrWrapper(Integer.class), is(true)); assertThat(ClassUtils.isPrimitiveOrWrapper(ClassUtils.class), is(false)); }
– static Class> primitiveToWrapper(Class> cls)
– static Class>[] primitivesToWrappers(Class>… classes)
指定されたプリミティブクラスのラッパークラスを返す。
/** * {@link ClassUtils#primitiveToWrapper(Class)} */ @Test public void testPrimitiveToWrapper() { assertTrue(ClassUtils.primitiveToWrapper(boolean.class).equals(Boolean.class)); assertTrue(ClassUtils.primitiveToWrapper(byte.class).equals(Byte.class)); assertTrue(ClassUtils.primitiveToWrapper(short.class).equals(Short.class)); assertTrue(ClassUtils.primitiveToWrapper(int.class).equals(Integer.class)); assertTrue(ClassUtils.primitiveToWrapper(long.class).equals(Long.class)); assertTrue(ClassUtils.primitiveToWrapper(float.class).equals(Float.class)); assertTrue(ClassUtils.primitiveToWrapper(boolean.class).equals(Boolean.class)); assertTrue(ClassUtils.primitiveToWrapper(char.class).equals(Character.class)); assertTrue(ClassUtils.primitiveToWrapper(void.class).equals(Void.class)); }
– static Class> wrapperToPrimitive(Class> cls)
指定されたラッパークラスのプリミティブクラスを返す。
/** * {@link ClassUtils#wrapperToPrimitive(Class)} */ @Test public void testWrapperToPrimitive() { assertTrue(ClassUtils.wrapperToPrimitive(Boolean.class).equals(boolean.class)); assertTrue(ClassUtils.wrapperToPrimitive(Byte.class).equals(byte.class)); assertTrue(ClassUtils.wrapperToPrimitive(Short.class).equals(short.class)); assertTrue(ClassUtils.wrapperToPrimitive(Integer.class).equals(int.class)); assertTrue(ClassUtils.wrapperToPrimitive(Long.class).equals(long.class)); assertTrue(ClassUtils.wrapperToPrimitive(Float.class).equals(float.class)); assertTrue(ClassUtils.wrapperToPrimitive(Boolean.class).equals(boolean.class)); assertTrue(ClassUtils.wrapperToPrimitive(Character.class).equals(char.class)); assertTrue(ClassUtils.wrapperToPrimitive(Void.class).equals(void.class)); }
【Apache Commons Lang】いかがだったでしょうか。
次回も引き続き【Apache Commons Lang】をご紹介します。
【関連記事】
Google App Engine 第一回
Google App Engine 第二回
Javaのライブラリを手軽にテストしたい!! Groovy入門 第1回
Google App Engine 第三回
Google App Engine 第四回
Google App Engine 第五回
Google App Engine 第六回
Google App Engine 第七回
Google App Engine 第八回
Google App Engine 第九回
Google App Engine 第十回
Google App Engine 第十一回
Google App Engine 第十二回
AngularJS入門01
AngularJS入門02
AngularJS入門03
AngularJS入門04
AngularJS入門05
AngularJS入門06
AngularJS入門07
AngularJS入門08
AngularJS入門09
攻略 Elevator Saga =基本編=
攻略 Elevator Saga =応用編=
Java Tips -=-= Library =-=- JodaTime [前半]
Java Tips -=-= Library =-=- JodaTime [後半]
Java Tips -=-= Library =-=- Lombok Part 1
Java Tips -=-= Library =-=- Lombok Part 2
Java Tips -=-= Library =-=- Lombok Part 3
Java Tips -=-= Library =-=- Lombok Part 4
Java Tips -=-= Library =-=- Apache Commons Lang Part 1
Java Tips -=-= Library =-=- Apache Commons Lang Part 2
Java Tips -=-= Library =-=- Apache Commons Lang Part 3
- 2017年12月11日
- CATEGORY- 1. 技術力{技術情報}