java - Java - 返回一维或二维数组
问题描述
根据传递的整数值创建一维数组或二维数组。该任务可以使用下面的代码实现,但使用Object
type 来存储和返回任一类型。这似乎是一种糟糕的编码实践,尤其是因为每次需要从数组中访问值时都需要进行强制转换。我希望有一个更清洁的方法来解决这个问题。
最后一个请求是该getArray
方法不执行任何检查并返回变量本身(即 return info;
)和instanceof
(如果使用)将只使用一次,而不是每次需要访问值时。
public class MultiArrayType {
private Object info;//can be either a 1-D or 2-D array
public MultiArrayType(int x) {
if (x > 10) {
info = new long[x][x];
} else {
info = new long[x];
}
}
public Object getArray() {
return info;
}
public static void main(String[] args) {
MultiArrayType t = new MultiArrayType(7);
Object array = t.getArray();
if (array instanceof long[]) {
System.out.println("1D array");
System.out.println("Index zero is: " + ((long[]) array)[0]);
} else if (array instanceof long[][]) {
System.out.println("2D array");
System.out.println("Cell (0, 0) is: " + ((long[][]) array)[0][0]);
} else {
//for safety only :)
System.out.println("Some other unknown object");
}
}
}
解决方案
推荐阅读
- babeljs - api.targets 不是 plugin-proposal-object-rest-spread 中的函数
- sql - 如何将子字符串数组与 db 匹配
- ruby-on-rails - trix 编辑器图像对齐
- azure - Terraform - 尝试使用服务主体在 Azure 中创建资源并从 keyvault 中提取该 SP 密钥
- python - typeError:此选项不支持 unsetopt()
- c# - 主窗口上的“DataContext is not set”消息
- javascript - 如何在不更改当前 HTML 结构的情况下使用 css 在顶部元素上方对齐底部元素(而不是覆盖)
- python - python 3范围和输入?
- node.js - Heroku 部署不适用于 postgresql api
- verilog - 意外的高阻抗输出