lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

 

 
     有时候我们在开发的时候需要当前的类型是不是基本类型,你会怎么做?是使用"getClass().getName()"方法吗?这种方法也可以判断,但是java中已经给我们写好了方法,我们只需要调用一下就可以了,不需要写大量的逻辑判断,为我们提供了方便,也节省了大量的时间。下面都是Class类中提供的一些便利的方法。

(1)class类提供了isPrimitive()方法

这个方法判断指定的 Class 对象是否表示一个基本类型或者void类型,为什么要把void放到这个方法中我也不太清楚,如果Class对象为表示八个基本类型和void则为true,否则false。所以以后我们可以直接使用这个方法来判断对象是不是基本类型。注意基本类型的包装类不属于基本类型,调用这个方法的返回值为false。

实例如下:

复制代码
复制代码
        // 基本类型判断
        System.out.println( BigDecimal.class.isPrimitive());
        System.out.println(int.class.isPrimitive());
        System.out.println(void.class.isPrimitive());
        System.out.println( TestBigdecimal.class.isPrimitive());
        System.out.println(Class.class.isPrimitive());
        
        运行结果:
        false
        true
        true
        false
        false
复制代码
复制代码

 

我们也来扩展一下其他的知识点。

(2)class类也提供了判断是不是数组类型方法isArray()。

(3)getName()返回此 Class对象表示的实体名称。

  • 如果此类对象表示的引用类型不是数组类型,则返回该类的二进制名称
  • 如果此类对象表示基本类型或void,则返回的名称是一个 String 字符串
  • 如果此类对象表示一类数组,则名称的内部形式由元素类型的名称组成,其后一个或多个“[”字符表示数组的深度嵌套。

    关于第三点中说的元素类型,列出来一张元素类型表:

元素类型 编码
boolean Z
byte B
char C
class or interface Lclassname;
double D
float F
int I
long J
short S

   实例如下:

复制代码
复制代码
       // getName
        long[] a2 = new long[] {1,2,3,4};
        String[] a3 = new String[] {"1","2","3","4"};
        System.out.println(Integer.class.getName());
        System.out.println(a1.getClass().getName());
        System.out.println(a2.getClass().getName());
        System.out.println(a3.getClass().getName());
        System.out.println(int.class.getName());
        System.out.println(String.class.getName());
        List<String> str = Arrays.asList( a3 );
        System.out.println(str.getClass().getName());
        System.out.println(str.getClass().isArray());
        
        运行结果:
            java.lang.Integer
            [I
            [J
            [Ljava.lang.String;
            int
            java.lang.String
            java.util.Arrays$ArrayList
            false
复制代码
复制代码

(4)判断数组中元素类型方法 getComponentType()

    getComponentType()方法返回表示数组的组件类型的Class,也就是说返回数组的每个元素的类型。如果此类不表示数组类,则此方法返回null。

   实例如下:

复制代码
复制代码
       // 返回数组的元素类型
       int[] a1 = new int[] {1,2,3,4};
       System.out.println(a1.getClass().getComponentType());
       System.out.println(a1.getClass());
       System.out.println(int.class.getComponentType());
       
       运行结果:
           int
           class [I
           null
复制代码
复制代码

 上面的方法都是Class类中的方法,Class类里面的方法还有很多,后续我会把一一解析的。

posted on   白露~  阅读(2907)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2019-07-07 mysql中将多行数据合并成一行数据
点击右上角即可分享
微信分享提示