我构建了一个静态方法,它向数组(大小固定)添加一个元素,你不必查看整个方法,它只是创建一个长度更大的新数组,并在其末尾添加一个元素,然后返回新数组。
static int[] add(int[] oldArray, int value){
int n = oldArray.length;
int[] newArray = new int[n+1];
for(int i=0; i<n; i++){
newArray[i]=oldArray[i];
}
newArray[n] = value;
return newArray;
}
该方法应按如下方式使用
int[] a = {2, 5};
a = add(a, 7);
现在数组a有三个元素而不是两个,即2、5和7。问题是,这仍然有点混乱。有没有一种方法可以实现非静态的方法(在“预定义数组类”或其他东西中?我不太确定如何更好地表达它),使其工作方式如下所示?
int[] a = {2, 5};
a.add(7);
我试图在不使用数组列表和嵌套列表的情况下实现这一点。
4条答案
按热度按时间j8ag8udp1#
你不能添加一个方法到“数组类”,对所有预定义的类都一样,对其他预定义的类唯一的解决方案是继承它们并添加你想要的方法,但是,数组不能这样做,因为它没有一个特定的预定义的类,它可以被定义为一个容器对象,保存固定数量的单一类型的值(Arrays)。
满足您需求的备选解决方案:
ArrayList
),如注解中所述。vxf3dgd42#
有没有一种方法可以将方法实现为非静态的(在一个“预定义数组类”或类似的东西中?我不太确定如何更好地表达它),这样它就可以像下面这样工作了?
不,没有,你必须使用
List
之类的东西,或者你自己编写一个接口来 Package 一个数组(它本身不能是数组)。gblwokeq3#
您所要求的是"extension methods" in C#,但是正如其他人已经回答的,它们在Java中不存在,但是Project Lombok(它充满了大多数专业Java开发人员应该知道和使用的非常有用的特性)用a simple annotation实现了它们。
下面是一个例子:
Lombok岛是一种"魔法",可能会得到一些课程教师"有趣"的回应;我不确定我是否推荐在Java入门类中使用它,但了解它仍然是有用的;它是工具箱中一个强大工具,可以帮助保持代码整洁。
8aqjt8rx4#
我认为你应该参考一下ArrayList是如何实现的以及它的大小是如何动态增加的。因为它在内部使用Array来实现,你可能会从那里得到一些建议。