Java中如何获取基本数据类型(自实现和调用反射API两种方式)

本文介绍了一种通过反射技术获取Java引用数据类型变量的类名,并分享了一个自定义工具方法来判断基本数据类型的技巧。通过这个工具方法,可以打印出如int、char等基本数据类型的字符串表示。此外,还更新了如何通过反射获取类中成员变量的类型,例如示例中展示了获取`age`字段为int类型的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

Java是面向对象的语言,一切皆是对象,所以基本数据类型都是有自己的包装类的,对于引用数据类型,我们通过反射技术可以得到一个变量的类名.

变量名称.getClass().getSimpleName()

但是,对于基本数据类型,我们如果想要得到他的类型应该怎么办呢?

我查了下API,好像没有专门的方法可以帮助我们直接获取基本数据类型变量的类型,所以我就自己写成了小工具,可以获得一个变量的基本数据类型。

实现小工具

 public static void main(String[] args) {
        int i = 3;
        System.out.println(myGetType(i)); //int
        char a = 'a';
        System.out.println(myGetType(a));  //char
       	}
    //判断类型
    public static String myGetType(Object o) {
        String type = o.getClass().getSimpleName();
        if ("Integer".equals(type)) {
            return String.valueOf(Integer.TYPE);
        } else if ("Long".equals(type)) {
            return String.valueOf(Long.TYPE);
        } else if ("Float".equals(type)) {
            return String.valueOf(Float.TYPE);
        } else if ("Double".equals(type)) {
            return String.valueOf(Double.TYPE);
        } else if ("Short".equals(type)) {
            return String.valueOf(Short.TYPE);
        } else if ("Byte".equals(type)) {
            return String.valueOf(Byte.TYPE);
        } else if ("Character".equals(type)) {
            return String.valueOf(Character.TYPE);
        } else if ("Boolean".equals(type)) {
            return String.valueOf(Boolean.TYPE);
        }
        return "非基本数据类型!";
    }

测试结果
在这里插入图片描述

时间有限,只是实现了判断基本数据类型,肯定有更好更简洁的写法,欢迎大家和我交流哦~


更新下:

如果在一个类中,想要获得某个成员变量的类型,还是有方法可以得到类型的,可以通过反射获得Field对象,再调用该对象内置API,getType()获取基本数据类型,恕我先前未找到方法~

public class TypeDemo {
	int age=10;
    Class<?> c1 = Class.forName("_02reflect._08ReflectDemo");
    Field age1 = c1.getDeclaredField("age");
    System.out.println(age1.getType()); //int
   }
}
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值