gpt4 book ai didi

java - 符合 .implements 的数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:51 26 4
gpt4 key购买 nike

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

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

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

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

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

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

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

最佳答案

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

工作?

编辑1:

(提示,我想是的)

编辑2:

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

编辑3:

(星际队长罗斯科的命令确认其有效)

编辑4:

(罗慕兰人确认它有效)

编辑5:

( polymorphism 这就是它起作用的原因)

编辑6:

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

关于java - 符合 .implements 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com