[ArrayStoreException,当我尝试在Java数组中使用模板时

问题描述 投票:-1回答:1

双端接口

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”类型数据。

java arrays
1个回答
0
投票
(T[]) new Objects[8];
© www.soinside.com 2019 - 2024. All rights reserved.