1

所以我有这个练习要解决。我必须创建第一个。一个名为Printable的接口,它有一个put()方法可以接受实现 Comparable 的对象。完毕

interface Printable{
   <T extends Comparable<T>> void put();
}

接下来我有两个名为PointTime的类,它们必须实现 Printable 接口。完成 接下来我必须创建一个名为的方法,该方法print()接受一个扩展Printable并打印整个数组的对象数组,完成

    private static <T extends Printable> void print(T[] inArray){
        for(T element: inArray){
           element.put();
        }
    }

所以现在为了测试代码,我创建了第一个Point类型的数组并使用代码print(theArray),它工作正常。第二件事是创建一个Time数组,DONE也可以正常工作。但 THEN 最后一个问题是创建时间的混合数组。这是我的问题,当我创建这样的数组时:

Object[] mixed = {new Point(x,y), new Point(t,s), new Time(i,u)...};

使用代码后,print(mixed);我得到一个编译错误,我知道为什么......因为 Object 没有扩展 Printable!我在方法中定义的print().. 所以我的问题是,如何创建一个可以在这里使用该print()方法的数组?

4

1 回答 1

1

Printable[] mixed = {new Point(x,y), new Point(t,s), new Time(i,u)...};

工作?

编辑1:

(提示,我想是的)

编辑2:

(提问者向我保证它有效)

编辑3:

(来自星际船长罗斯科的命令证实它有效)

编辑4:

(罗慕伦人确认它有效)

编辑5:

多态性是它起作用的原因)

编辑6:

(有趣的是,在类型擦除通过后代码看起来多么愚蠢。)

于 2013-11-08T01:29:49.040 回答