温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

通过java的反射编写泛型数组

发布时间:2020-07-06 04:17:31 来源:网络 阅读:374 作者:沙漏半杯 栏目:编程语言

通过java的反射编写泛型数组


第一种方法:会抛出一个ClassCastException异常,因为这段代码返回的是对象数组(Object[])类型,不能转换成对应的数组类型。因此不提倡使用这种方法


public static Object[] badCopyOf(Object[] a, int newLength) {

  // 创建一个新的对象数组

  Object[] newArray = new Object[newLength];

  // 拷贝数组

  System.arraycopy(a, 0, newArray, 0, Math.min(a.length, newLength));

  return newArray;


 }


 


第二种方法:不需要声明为对象型数组,整型数组 int[]可以被转换成Object ,但是不能转换成对象型数组


public static Object goodCopyOf(Object a, int newLength) {

  // 获取类对象

  Class cl = a.getClass();

  // 判断类的是不是一个数组对象

  if (!cl.isArray())

   return null;

  // 获取类对象的类型

  Class componentType = cl.getComponentType();

  // 获取数组的长度

  int length = Array.getLength(a);


  Object newArray = Array.newInstance(componentType, newLength);

  // 复制数组

  System.arraycopy(a, 0, newArray, 0, Math.min(length, newLength));


  return newArray;

 }


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI