假设我们想在返回数组的接口中有一个方法,如下所示:
interface A {
B[] findAllB();
}
但是数组是非常底层的并且是明确实现的。它们的实现是最终的,不能改变,就像一个最终类。如果此接口中的返回类型已经是数组,则无法返回除数组以外的任何其他内容。因此,最好避免将数组作为返回类型,因为它限制了实现类返回它想要返回的任何内容的自由。所以,我们决定使用java.util.List
:
interface A {
List<B> findAllB();
}
但是在实现这个接口时,我们返回一个实际的数组可能非常方便,理论上它确实实现了 List 接口(例如 withadd
和remove
throwing UnsupportedOperationException
s):
class AImpl implements A {
List<B> findAllB() {
B[] array = ...;
...
return array; // does not work
}
}
但这不起作用,因为您不能返回 aB[]
而不是List<B>
。
我想知道低级Java数组是否实现了一个接口(或者甚至可能有一个接口),或者换句话说,可以安全地返回一个数组来代替它。
如果这是可能的,java.util.List
也可以扩展它,以便我们可以在幕后交替返回数组或列表。
我已经怀疑这是不可能的,但在计算机的世界里,一切皆有可能,所以谁知道呢。