- 基本数据类型的数组无法自动封装为对象数据类型的数组
- 数组同样可获取到class对象,通过is.getClass().isArray()判断是否为数组
- 如果为数组,需要通过args instanceof Object[] 或者 args instanceof int[] 判断是哪种数据类型的数组,之后再进行转换,否则会转换异常
- 数组包括基本数据类型的数组均通过Object(注意非Object [])入参接收,确定该数组的数据类型后,可转为该类型的数组
- Arrays的asList方法只对数据类型为对象类型的数组有效,基本数据类型的数组无效;基本数据类型调用该方法时,会把整个数组当作object放入list中返回
- 数组的打印结果为[Ljava.lang.String;@5387f9e0,L数组类型;@地址
- 如果要打印出数组的内容,使用Arrays.toString(args);
附:将各种数组转需要的集合类
package com.kanche.bridge.transfer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
/**
* Created by liukai on 2017/9/10.
*/
public class ArrayUtil {
//todo 改为log4j logger
private static Logger logger = new Logger();
public static Collection array2Collection(Object o,Class<? extends Collection> clazz) throws Exception{
if(o instanceof Collection){
return (Collection)o;
}
if(!o.getClass().isArray()){
throw new Exception("o is not array");
}
//对象数组
if(o instanceof Object[]){
logger.info("o is object array!");
return Arrays.asList(o);
}
Collection result = null;
if(clazz != null){
result = clazz.newInstance();
}else{
result = new HashSet();
}
//HashSet result = new HashSet();
//基本数据类型byte char int float double boolean short long 数组
if(o instanceof byte[]){
logger.info("o is byte array!");
byte[] array = (byte[])o;
for(byte arr : array){
result.add(arr);
}
}
if(o instanceof char[]){
logger.info("o is char array!");
char[] array = (char[])o;
for(char arr : array){
result.add(arr);
}
}
if(o instanceof int[]){
logger.info("o is int array!");
int[] array = (int[])o;
for(int arr : array){
result.add(arr);
}
}
if(o instanceof float[]){
logger.info("o is float array!");
float[] array = (float[])o;
for(float arr : array){
result.add(arr);
}
}
if(o instanceof double[]){
logger.info("o is double array!");
double[] array = (double[])o;
for(double arr : array){
result.add(arr);
}
}
if(o instanceof boolean[]){
logger.info("o is boolean array!");
boolean[] array = (boolean[])o;
for(boolean arr : array){
result.add(arr);
}
}
if(o instanceof short[]){
logger.info("o is short array!");
short[] array = (short[])o;
for(short arr : array){
result.add(arr);
}
}
if(o instanceof long[]){
logger.info("o is long array!");
long[] array = (long[])o;
for(long arr : array){
result.add(arr);
}
}
return result;
}
public static void main(String []args){
try{
//对象
args = new String []{"a","b","c"};
Collection oc = array2Collection(args,null);
logger.info(oc);
//byte
byte[] barry = new byte []{1,4,2,5};
Collection bc = array2Collection(barry,ArrayList.class);
logger.info(bc);
//char
char[] carry = new char []{'l','i','u'};
Collection cc = array2Collection(carry,ArrayList.class);
logger.info(cc);
//int
int[] iarry = new int []{1,4,2,5};
Collection ic = array2Collection(iarry,ArrayList.class);
logger.info(ic);
//int
double[] darry = new double []{1,4,2,5};
Collection dc = array2Collection(darry,ArrayList.class);
logger.info(dc);
//int
float[] farry = new float []{1,4,2,5};
Collection fc = array2Collection(farry,ArrayList.class);
logger.info(fc);
//int
boolean[] booarry = new boolean []{true,false,false,true};
Collection booc = array2Collection(booarry,ArrayList.class);
logger.info(booc);
//short
short[] sarry = new short []{1,4,2,5};
Collection sc = array2Collection(sarry,ArrayList.class);
logger.info(sc);
//long
long[] larry = new long []{1,4,2,5};
Collection lc = array2Collection(larry,ArrayList.class);
logger.info(lc);
}catch(Exception e){
e.printStackTrace();
}
}
}
class Logger{
static void info(String content){
System.out.println(content);
System.out.println("---------");
}
static void info(Collection content){
for(Object o : content){
System.out.print(o+" ");
}
System.out.println();
System.out.println("---------");
}
}