我正在做一些事情,但我遇到了这个我无法解决的问题...... 有两种情况,但我需要同时使用它们......
1 @Test
2 public void newStackIsFull() {
3 BoundedStack targetStack = new BoundedStack(5);
4 targetStack[0] = new BoundedStack();
5 assertTrue(targetStack.isFull());
6 }
在这种情况下,我在第4行收到错误:array required, but BoundedStack found
如果我改变代码:
1 @Test
2 public void newStackIsFull() {
3 BoundedStack[] targetStack = new BoundedStack[5];
4 targetStack[0] = new BoundedStack();
5 assertTrue(targetStack.isFull());
6 }
我在第5行遇到错误:cannot find symbol .isFull()
问题在于我需要立刻同时处理这种情况。所以我必须能够从数组中读取数据,将数据放入数组中......并且还使用BoundedStack类中的方法。
答案 0 :(得分:1)
您的第一个示例存在编译时错误,因为您尝试访问数组的第一个元素,但targetStack
实际上是BoundedStack
而不是数组。
你的第二个例子也有编译时错误;这次,您尝试在数组(isFull
变量)上调用targetStack
方法,并且此方法对于数组不存在。
你似乎混淆了一个对象的数组和对象本身。
BoundedStack[] targetStack = new BoundedStack[5];
//targetStack is now an array of 5 BoundedStack and not a BoundedStack
//targetStack[0] is the first element of the array, beware that as of this moment, it is null because the array was not initialized
targetStack[0] = new BoundedStack(); //you create a new BoundedStack object
System.out.println(targetStack[0].isFull()); //we print if this first element is full or not.
答案 1 :(得分:0)
如果你想在java中扩展数组类型:你不能。完全停止。
但是你可以使用List
接口的实现(ArrayList
这里似乎是一个不错的选择),它将使用索引存储东西,你可以使用get
方法检索东西:
List<BoundedStack> list = new ArrayList<BoundedStack>();
list.add(new BoundedStack());
list.get(0);
list.isEmpty();
如果要向此类添加方法,则可以对其进行扩展。