反射方法getClasses()可以生成所有的嵌套类,而test()fa
16.6.3 从Generator中创建数组
需要两个转换工具,第一个工具是使用任意的Generator来产生Object子类型的数组,第二个工具接收任意基本类型的包装器类型数组,并产生相应的基本类型数组。
1.public static<T> T[] array(T[] a,Generator<T> gen){
return new CollectionData<T>(gen,a.length).toArray(a);}
2.public static<T> T[] array(Class<T> type,Generator<T> gen,int size)
{
T[] a=(T[])java.lang.reflect.Array.newInstance(type.size);
return new CollectionData<T>(gen,size).toArray(a);}
Collection对象,该对象中所填充的元素是有生成器gen产生的,而元素的数量则由构造器的第二个参数确定。
第二个方法使用反射来动态创建具有恰当的类型和数量的新数组。
泛型不能用于基本类型,而我们确实想用生成器来填充基本类型数组,创建一个转换器,可以接受任意的包装器对象数组,并把他们转换为原声类型。
Converto{
public static boolean[] primitive(Boolean[] in){}
16.7 Arrays使用功能
在Java.util类库中可以找到Arrays类,它有一套用于数组的static使用方法,起作用有六个基本的方法:equal()用于比较两个数组是否相等;fill()填充。sort排序;binarysearch用于在已经排序的数组中查找元素。toString()产生String;hashcode()产生数组的散列码。Arays.asList接收任意序列的对象专户为数组。
system.arraycopy()复制数组比用for循环复制快很多。
16.7.3 数组元素的比较
public class ComType implements Comparable<ComType>{
int i;
int j;
public int compareTo(ComType rv){}
public static Genertor<CompType> generator(){
return new Generator<ComType>(){
public CompType next(){
return new ComType(r.nextInt(100).r.nexInt(100);
}
}
}