java - 当我尝试为我的类实现通用数据类型时遇到一些错误
问题描述
我一直在尝试搜索,但我找不到我的问题的答案。我觉得我已经正确实现了我的通用数据类型,但我仍然遇到错误。
我正在做一个练习,给我构造函数/方法和变量(例如,我不能更改变量输入),现在我必须编写构造函数/方法以使它们工作。该程序创建了一个数组(对象),该数组(对象)可以通过向其中添加元素来增长,并且代码中每个方法上方的注释解释了它们的作用。
当我尝试在我的两个构造函数中创建数组时,我收到错误“变量必须为空数组提供维度表达式或数组初始值设定项”和“类型不匹配:无法从 T[] 转换为 int”。
在我的“add”方法中,我收到错误“无法在数组类型 T[] 上调用 add(int, T)”,最后在我的“toArray”方法中,我收到错误“类型不匹配:无法从 Object[] 转换为T[]”。
共同的主题似乎是我没有正确实现泛型数据类型,但无论我尝试搜索多少次类似的问题,我都看不出我所做的有什么不同。
搜索时,我看到很多人说数组不能“增长”,而是使用 ArrayList,但是必须有一种方法可以只用数组来解决这个问题,否则你无法解决这个练习。
import java.util.ArrayList;
import java.util.Arrays;
public class GrowingArray<T> {
private Object[] objects;
private int pointer;
//empty array
public GrowingArray() {
objects = new Object[];
}
//array that contains ds
public GrowingArray(T[] ds) {
objects = new Object[ds];
}
// add element e and return true
public boolean add(T e) {
pointer = 0;
objects.add(pointer++, e);
return true;
}
// return true if value d is found in the array
public boolean contains(T d) {
for(int i = 0; i <= objects.length; i++) {
if(objects[i] == d) {
}
}
return true;
}
// return the element on index i
public T get(int index) {
int i = index;
return objects[i];
}
// return first index containing d, if not found return -1
public int indexOf(T d) {
for(int i = 0; i <= objects.length; i++) {
if(d == objects[i]) {
return i;
}
}
return -1;
}
// return last index containing d, if not found return -1
public int lastIndexOf(T d) {
for(int i = objects.length; i >= 0; i--) {
if(d == objects[i]) {
return i;
}
}
return -1;
}
// return length of array
public int size() {
return objects.length;
}
// return a trimmed version of the array
public T[] toArray() {
return Arrays.copyOf(objects, objects.length);
}
}
解决方案
objects = new Object[];
“变量必须提供维度表达式或数组初始值设定项”
你需要传递一个大小。空括号不起作用。
objects = new Object[someInitialSize];
objects = new Object[ds];
“类型不匹配:无法从 T[] 转换为 int”
要复制数组,请使用Arrays.copyOf
:
objects = Arrays.copyOf(ds, ds.length);
推荐阅读
- mysql - 仅当某些值等于某物时,才使用 Where 子句选择语句
- go - 如何使用 AWS SDK Go v2 将 AWS STS Assume 角色与 MFA 结合使用?
- javascript - 尝试将实时 sql 服务器与节点 js 连接
- avx - AVX 中的平均值数组
- bootstrap-5 - 如何在断点后更改列的顺序?
- reactjs - 使用自定义组件时,Emotion Styled 组件不会触发 dragEnd 事件
- shell - 在while循环中正确更改makefile中的变量
- reactjs - REACT JS AWS congnito 使用社交媒体登录
- javascript - 如何获取复选框值?
- kubernetes - 资源版本太旧: