符合.implements的数组

时间:2013-11-08 01:27:08

标签: java arrays generics interface

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

确实

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

工作?

编辑1:

(提示,我想是的)

编辑2:

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

编辑3:

(Star Captain Rosco的订单证实它有效)

编辑4:

(罗慕兰确认它有效)

编辑5:

polymorphism就是它起作用的原因)

编辑6:

(有趣的是代码在type erasure完成后看起来有多愚蠢。)