gpt4 book ai didi

java - 如何设置列表的引用类型?

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

我是一个Java新手。我需要定义一个构造函数 MyArrayList(Object type) 来设置稍后添加到列表中的引用类型。

构造函数的签名无法更改。另外,我不允许使用泛型

我尝试这样做:

public class MyArrayList implements MyList {
private Object[] theList; // array of objects


public MyArrayList(Object type) {
theList = new type[0];

}

并得到一个编译错误,因为 type 不是类。正确的做法是什么?

最佳答案

正如您所说,您不想使用泛型,您可以通过Array#newInstance ( documentation ) 动态创建数组。这是您调整后的代码:

public class MyArrayList implements MyList {
private Object[] theList;

public MyArrayList(Object type) {
// Adjust as you like
int size = 0;
// Dynamically create array of type "type"
theList = (Object[]) Array.newInstance(type.getClass(), size);
}
}

由于您在编译时不知道该类,因此只能将其用作Object[],但是一旦类型已知,它在运行时只允许使用type真实类型的元素,而不是任意Object

<小时/>

请注意,数组具有固定大小。您不能只是向其中添加元素,大小始终是固定的并且必须提前知道。如果您需要更动态的结构,请使用诸如 List 之类的结构(例如 ArrayListLinkedList)。

然后,您可以只记住给定的 type 对象,如果用户尝试添加一个项目,您将检查 element instanceof type 并仅在返回 true 时添加,否则抛出诸如 IllegalArgumentException 之类的异常。

或者,如上所述,为数组设置一个合适的固定大小。您还可以通过在构造函数中提供 size 参数来向用户提供该选择。

关于java - 如何设置列表的引用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47240785/

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