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));
+ }
+}