From 45be1b60457eaa89e2dca7bbbc928154a2596a40 Mon Sep 17 00:00:00 2001 From: joe zhang Date: Tue, 28 Jul 2020 21:12:15 +0800 Subject: [PATCH] Add primitive type check method and unit tests --- .../core-java-lang-oop-types/pom.xml | 8 ++++ .../primitivetype/PrimitiveTypeUtil.java | 38 +++++++++++++++++ .../primitivetype/PrimitiveTypeUtilTest.java | 41 +++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/primitivetype/PrimitiveTypeUtil.java create mode 100644 core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/primitivetype/PrimitiveTypeUtilTest.java diff --git a/core-java-modules/core-java-lang-oop-types/pom.xml b/core-java-modules/core-java-lang-oop-types/pom.xml index 5555df4818..ee167bbae2 100644 --- a/core-java-modules/core-java-lang-oop-types/pom.xml +++ b/core-java-modules/core-java-lang-oop-types/pom.xml @@ -12,4 +12,12 @@ core-java-lang-oop-types core-java-lang-oop-types jar + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/primitivetype/PrimitiveTypeUtil.java b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/primitivetype/PrimitiveTypeUtil.java new file mode 100644 index 0000000000..c749ed9dcd --- /dev/null +++ b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/primitivetype/PrimitiveTypeUtil.java @@ -0,0 +1,38 @@ +package com.baeldung.primitivetype; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang3.ClassUtils; + +import com.google.common.primitives.Primitives; + +public class PrimitiveTypeUtil { + + private static final Map, Class> WRAPPER_TYPE_MAP; + static { + WRAPPER_TYPE_MAP = new HashMap, Class>(16); + WRAPPER_TYPE_MAP.put(Integer.class, int.class); + WRAPPER_TYPE_MAP.put(Byte.class, byte.class); + WRAPPER_TYPE_MAP.put(Character.class, char.class); + WRAPPER_TYPE_MAP.put(Boolean.class, boolean.class); + WRAPPER_TYPE_MAP.put(Double.class, double.class); + WRAPPER_TYPE_MAP.put(Float.class, float.class); + WRAPPER_TYPE_MAP.put(Long.class, long.class); + WRAPPER_TYPE_MAP.put(Short.class, short.class); + WRAPPER_TYPE_MAP.put(Void.class, void.class); + } + + public boolean isPrimitiveTypeByCommansLang(Object source) { + return ClassUtils.isPrimitiveOrWrapper(source.getClass()); + } + + public boolean isPrimitiveTypeByGuava(Object source) { + return Primitives.isWrapperType(source.getClass()); + } + + public boolean isPrimitiveType(Object source) { + return WRAPPER_TYPE_MAP.containsKey(source.getClass()); + } + +} diff --git a/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/primitivetype/PrimitiveTypeUtilTest.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/primitivetype/PrimitiveTypeUtilTest.java new file mode 100644 index 0000000000..7d3c2964d4 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/primitivetype/PrimitiveTypeUtilTest.java @@ -0,0 +1,41 @@ +package com.baeldung.primitivetype; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Before; +import org.junit.Test; + +public class PrimitiveTypeUtilTest { + + private PrimitiveTypeUtil primitiveTypeUtil; + private boolean booleanVal = false; + private Long longWrapper = 1L; + private String nonPrimitiveVal = "Test"; + + @Before + public void setup() { + primitiveTypeUtil = new PrimitiveTypeUtil(); + } + + @Test + public void givenObjectWhenCheckWithGuavaShouldValidate() { + assertTrue(primitiveTypeUtil.isPrimitiveTypeByGuava(booleanVal)); + assertTrue(primitiveTypeUtil.isPrimitiveTypeByGuava(longWrapper)); + assertFalse(primitiveTypeUtil.isPrimitiveTypeByGuava(nonPrimitiveVal)); + } + + @Test + public void givenObjectWhenCheckWithCommansLangShouldValidate() { + assertTrue(primitiveTypeUtil.isPrimitiveTypeByCommansLang(booleanVal)); + assertTrue(primitiveTypeUtil.isPrimitiveTypeByCommansLang(longWrapper)); + assertFalse(primitiveTypeUtil.isPrimitiveTypeByCommansLang(nonPrimitiveVal)); + } + + @Test + public void givenPrimitiveOrWrapperWhenCheckWithCustomMethodShouldReturnTrue() { + assertTrue(primitiveTypeUtil.isPrimitiveType(booleanVal)); + assertTrue(primitiveTypeUtil.isPrimitiveType(longWrapper)); + assertFalse(primitiveTypeUtil.isPrimitiveType(nonPrimitiveVal)); + } +}