//定义的接口
public interface Generator{ Object next();} //自己定义的Arrays2类,具体实现没有写出。
public class Arrays2{
public static void fill(Object[] a ,Generator gen){
//具体实现
//为a数组的每个元素填充内容不同的同类对象。
}
} //需要考虑的程序
public class CompType implements Comparable{
int i;
int j;
public CompType(int n1,int n2){
i=n1;
j=n2;
} private static Random r = new Random(); public static Generator generator(){
return new Generator(){
public Object next(){
return new CompType(r.nextInt(100),r.nextInt(100));
}
}
}
public static void main( String[] args){
CompType[] a=new CompType[10];
//generator()返回的是Generator对象,为什么可以填充到a中?
//a数组不是只能填充CompType对象吗?
Array2.fill(a,generator());
}
}程序是出于TIJ的306页的数组比较的例子,有这书的朋友可以看看具体的程序。注:程序没有确定有没有语法错误,有的话希望大家忽略,直接讨论我在程序中提的问题。谢谢!
public interface Generator{ Object next();} //自己定义的Arrays2类,具体实现没有写出。
public class Arrays2{
public static void fill(Object[] a ,Generator gen){
//具体实现
//为a数组的每个元素填充内容不同的同类对象。
}
} //需要考虑的程序
public class CompType implements Comparable{
int i;
int j;
public CompType(int n1,int n2){
i=n1;
j=n2;
} private static Random r = new Random(); public static Generator generator(){
return new Generator(){
public Object next(){
return new CompType(r.nextInt(100),r.nextInt(100));
}
}
}
public static void main( String[] args){
CompType[] a=new CompType[10];
//generator()返回的是Generator对象,为什么可以填充到a中?
//a数组不是只能填充CompType对象吗?
Array2.fill(a,generator());
}
}程序是出于TIJ的306页的数组比较的例子,有这书的朋友可以看看具体的程序。注:程序没有确定有没有语法错误,有的话希望大家忽略,直接讨论我在程序中提的问题。谢谢!
解决方案 »
- java.io.IOException: error 10054 during TCP read
- 为什么SOCKET SERVER中接收的数据每次都一样?
- appletview关于java3d的编译错误。。
- java里的正则
- 基于Socket 当服务端收到客户端发来的内容,希望把服务端把从客户端接收到得内容返回到客户端
- classpath环境变量值中有一个英文句号“.”??????代表什么??起到什么作用??
- 谁能告诉我!(不好意思,分用完了)
- 50分求助:毕业设计,在线急等,谢谢
- 谁知道西门子3118手机怎么样?
- 新手求助,希望各位能帮帮忙
- 菜鸟请教一个小问题
- 请问JDBC中如何获取某个表的外键的所有信息?
1、//generator()返回的是Generator对象,为什么可以填充到a中?
的确,但是生成的对象作为参数传递到fill方法中,在fill方法内部调用该对象的next方法实现初始化a。2、//a数组不是只能填充CompType对象吗?
由于在fill方法中,数组已经向上转型为Object数组类型,则可以接受Generator对象中next方法的返回值。但是这种结构必须使Generator接口的实现和数组的类型一致,不然将产生潜在的错误。例如以下代码实现:public class Test1{
public static void main(String[] args){
Test1[] a = new Test1[3];
Object t = new String("");
fill(a,t);
Test1 t1;
for(int i = 0;i < a.length;i++){
t1 = a[i];
}
}
public static void fill(Object[] a,Object b){
a[0] = b;
}
}