Невозможно определить аргументы типа для ArraySortedMap <> - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть задание относительно дженериков. -jdk.13.02, Затмение.

Map<String, Person> personByFirstName = new ArrayMap<>();

Эта строка кода выдает мне ошибку: «невозможно определить аргументы типа для ArrayMap»

это заголовок карты интерфейса:

public interface Map<K, V> extends Iterable<Map.Entry<K, V>>

это класс ArrayMap:

public class ArrayMap <K, V> implements Map<K, V>{
    @SuppressWarnings("unchecked")
    protected Entry<K, V>[] array = (Entry<K, V>[]) new Entry[16];
    protected int nEntries = 0;

    ArrayMap(){

    }

... et c. @Suppresswarnings требуется в соответствии с заданием.

Кто-нибудь имеет представление о том, что здесь может происходить, или информации недостаточно? Я просто предполагаю, что проблема заключается в заголовках / обобщениях классов. Я попытался погуглить ошибку и другие вещи, но ничего не нашел.

Спасибо

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Я только что реализовал ваш код сам, и он работает для меня.

Однако я сначала увидел эту ошибку, где у меня была эта строка:

Map<String, Person> personByFirstName = new ArrayMap<>();

Это потому, что я импортировал java .util.Map. Убедитесь, что вы импортируете свою собственную карту вместо java .util.Map.

0 голосов
/ 03 апреля 2020

Ваш код отлично работает для меня: personbyfirst объявление имени

Вот та же карта массива, что и у вас. Так что я думаю, что вы либо реализовали метод некорректно, либо испортили импорт. Попробуйте создать новый проект с тем же кодом.

import java.util.Collection;
import java.util.Map;
import java.util.Set;

public class ArrayMap <K, V> implements Map<K, V> {
    @SuppressWarnings("unchecked")
    protected Entry<K, V>[] array = (Entry<K, V>[]) new Entry[16];
    protected int nEntries = 0;

    ArrayMap(){

    }

    @Override
    public int size() {
        return 0;
    }

    @Override
    public boolean isEmpty() {
        return false;
    }

    @Override
    public boolean containsKey(Object key) {
        return false;
    }

    @Override
    public boolean containsValue(Object value) {
        return false;
    }

    @Override
    public V get(Object key) {
        return null;
    }

    @Override
    public V put(K key, V value) {
        return null;
    }

    @Override
    public V remove(Object key) {
        return null;
    }

    @Override
    public void putAll(Map<? extends K, ? extends V> m) {

    }

    @Override
    public void clear() {

    }

    @Override
    public Set<K> keySet() {
        return null;
    }

    @Override
    public Collection<V> values() {
        return null;
    }

    @Override
    public Set<Entry<K, V>> entrySet() {
        return null;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...