双端接口
interface Deque<Item> {
int size();
void addFirst(Item item);
void addLast(Item item);
Item removeFirst();
Item removeLast();
Item get(int index);
boolean isEmpty();
void printDeque();
}
这是我自定义的ArrayDeque,我需要存储“字符”类型,但出现ArrayStoreException。
import java.util.Objects;
public class Array2Deque<T> implements Deque<T> {
private T[] items = (T[]) new Objects[8];
@Override
public void addLast(T item) {
items[0] = item;
}
@Override
public int size() {
return 0;
}
@Override
public void addFirst(T t) {
}
@Override
public T removeFirst() {
return null;
}
@Override
public T removeLast() {
return null;
}
@Override
public T get(int index) {
return null;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public void printDeque() {
}
public static void main(String[] args) {
Deque<Character> dq = new Array2Deque<>();
Character ch = 'h';
dq.addLast(ch);
}
}
错误信息:
Exception in thread "main" java.lang.ArrayStoreException: java.lang.Character
at Array2Deque.addLast(Array2Deque)
at Array2Deque.main(Array2Deque)
ArrayStoreException表示我尝试存储错误的类型数据。但是我确定我创建了一个T类型数组并将T设置为“ Character”,为什么我不能存储“ Character”类型数据。
(T[]) new Objects[8];