[英]Why Java does not allow to extend array type
作为一个实验,我试图像这样扩展一个int
-array:
public class IntArrayExtension extends int[]{
// additional fields and methods.
}
在类本身中添加一些与排序,交换,子数组构建等相关的方法。 但是我在编译时遇到了这个错误:
IntArrayExtension.java:1: unexpected type
found : int[]
required: class
public class IntArrayExtension extends int[]{
^
1 error
我很想知道:为什么Java不允许扩展数组?
扩展基本类型(如String
或数组)会打开安全漏洞。 如果Java允许您扩展数组,那么采用数组的方法就会变得不安全。 这就是为什么字符串是final
,并且数组根本无法扩展。
例如,您可以覆盖clone()
方法,并返回不正确大小的数组。 这有可能打破以数组为参数的系统代码逻辑。
最重要的是,数组是Java中的特殊对象,因为它们没有类定义。
您尝试解决的问题有两种解决方案:
Collections
等。或者 IntArrayExtension
类中封装数组,并提供用于访问数组及其附加功能的包装器方法。 数组是对象,但数组类型不是类,因此无法扩展。 参见例如JLS#10.8 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.