所以我有这个练习来解决。我必须创造第一。一个名为 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()
方法创建一个可以在这里工作的数组?
答案 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完成后看起来有多愚蠢。)