java如何将Object数组转换为指定类型数组

 更新时间:2022年08月19日 14:49:55   作者:zhangbeizhen18  
这篇文章主要介绍了java如何将Object数组转换为指定类型数组,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

将Object数组转换为指定类型数组

1.转换函数

    public static <T> T[] convertArray(Class<T> targetType, Object[] arrayObjects) {
        if (targetType == null) {
            return (T[]) arrayObjects;
        }
        if (arrayObjects == null) {
            return null;
        }
        T[] targetArray = (T[]) Array.newInstance(targetType, arrayObjects.length);
        try {
            System.arraycopy(arrayObjects, 0, targetArray, 0, arrayObjects.length);
        } catch (ArrayStoreException e) {
            e.printStackTrace();
        }
        return targetArray;
    }

2.测试main函数

    public static void main(String []args){
 
         GirlVo girlVo =new GirlVo();
         girlVo.setGirlId("08123");
         girlVo.setGirlName("张一");
         GirlVo girlVo2 =new GirlVo();
         girlVo2.setGirlId("08456");
         girlVo2.setGirlName("张二");
         Object[] arrayObjects2 = new Object[2];
         arrayObjects2[0] = girlVo;
         arrayObjects2[1] = girlVo2;
         
         GirlVo[] arrayObjects3 ;
         arrayObjects3 = convertArray(GirlVo.class,arrayObjects2);
         for(int i=0;i<arrayObjects3.length;i++){
             System.out.println("输出GirlVo: "+arrayObjects3[i].toString());
         }
    }

3.实体类

public class GirlVo implements Serializable {
     
    private static final long serialVersionUID = -8545755852948661858L;
    
    /**ID号*/
    String girlId;
    /**姓名*/
    String girlName;
    /**年龄*/
    long age;
    /**身高*/
    double height;
    /**罩杯*/
    String cupSize;
    public String getGirlId() {
        return girlId;
    }
    public void setGirlId(String girlId) {
        this.girlId = girlId;
    }
    public String getGirlName() {
        return girlName;
    }
    public void setGirlName(String girlName) {
        this.girlName = girlName;
    }
    public long getAge() {
        return age;
    }
    public void setAge(long age) {
        this.age = age;
    }
    public double getHeight() {
        return height;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    public String getCupSize() {
        return cupSize;
    }
    public void setCupSize(String cupSize) {
        this.cupSize = cupSize;
    }
 
    @Override
    public String toString() {
        
        return "GirlVo [girlId=" + girlId
                +",girlName=" + girlName
                +",age=" + age
                +",height=" + height
                +",cupSize=" + cupSize
                +"]";
    }
}

将Object转换为数组的情况

今天在使用一个别人写的工具类,这个工具类,主要是判空操作,包括集合、数组、Map等对象是否为空的操作。

下面展示了一部分代码:

public static boolean isEmpty(Object object) {
    if(object == null){
         return true;
     }
     //数组判空
     if (object.getClass().isArray()) {
           Object[] obj = (Object[])object;
           return obj.length == 0;
     }  
}

在外部,我传进来一个数组后,可以看到直接强转为数组。

我测试了下,转换异常。

后来我自己封装了下,正常的操作应该是这样的:

public static boolean isEmpty(Object object) {
    if(object == null){
         return true;
     }
     //数组判空
     if (object.getClass().isArray()) {
           int len = Array.getLength(object);
            Object[] obj = new Object[len];
            for(int i = 0; i < len; i++) {
                obj[i] = Array.get(obj, i);
            }
            return obj.length == 0;
     }  
}

最后测试通过。 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • Spring底层核心源码原理解析

    Spring底层核心源码原理解析

    这篇文章主要介绍了Spring底层核心源码原理解析,当在某个方法上加了@Transactional注解后,就表示该方法在调用时会开启Spring事务,而这个方法所在的类所对应的Bean对象会是该类的代理对象,需要的朋友可以参考下
    2023-09-09
  • 浅析Java中对称与非对称加密算法原理与使用

    浅析Java中对称与非对称加密算法原理与使用

    密码学是研究编制密码和破译密码的技术科学。这篇文章主要为大家介绍了Java中对称与非对称加密算法的原理与使用,感兴趣的小伙伴可以了解一下
    2023-03-03
  • Java Jedis NOAUTH Authentication required问题解决方法

    Java Jedis NOAUTH Authentication required问题解决方法

    这篇文章主要介绍了Java Jedis NOAUTH Authentication required问题解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Java的Lombok之@Builder使用总结

    Java的Lombok之@Builder使用总结

    这篇文章主要介绍了Java的Lombok之@Builder使用总结,当不使用@Builder注解到类上,创建T1的有参构造函数,入参不仅包括T1中所有的参数,还包括T中所有的参数,T2的属性由T1在有参构造函数中通过调用父类构造器的方式赋初值,需要的朋友可以参考下
    2023-12-12
  • Ribbon和Feign的区别及说明

    Ribbon和Feign的区别及说明

    本文介绍了Spring Cloud Netflix中的两个负载均衡组件:Ribbon和Feign,Ribbon是一个基于HTTP和TCP客户端的负载均衡工具,使用起来较为繁琐,而Feign是一个使用接口方式的HTTP客户端,采用类似MyBatis的@Mapper注解方式,使得编写客户端变得非常容易
    2024-11-11
  • java实现ssh连接服务器的方法步骤

    java实现ssh连接服务器的方法步骤

    本文主要介绍了java实现ssh连接服务器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • Java日常练习题,每天进步一点点(41)

    Java日常练习题,每天进步一点点(41)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例

    Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例

    这篇文章主要介绍了Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法,结合实例形式分析了Java使用递归与循环两种方式实现未知维度集合的笛卡尔积相关概念、原理与操作技巧,需要的朋友可以参考下
    2017-12-12
  • Java实现UDP互发消息

    Java实现UDP互发消息

    这篇文章主要为大家详细介绍了Java实现UDP互发消息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • java中Calendar.add()方法的使用

    java中Calendar.add()方法的使用

    本文主要介绍了java中Calendar.add()方法的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04

最新评论