2010-10-16 3 views
0

Я получаю сообщение об ошибке при компиляции:(java) несовместимые типы?

«несовместимых типов - нашел блок, но ожидаемого блок»

Почему это? Это когда я возвращаюсь из метода, я могу даже проанализировать возвращаемые данные в «unit», и он отлично работает, почему возникает эта ошибка? Является ли факт, что я использую итератор в коллекции, которую я создал, имеет к этому какое-то отношение? Я не оставил итератор типа E, поскольку я специально хочу эту коллекцию для одного типа объекта.

private class unitHashIterator<unit> implements Iterator<unit> { 
    private unitHash hash; 
    private int nextIndex; 
    private unitHashIterator(unitHash u) { 
    hash = u; nextIndex = 0; 
    } 
    public unit next() { 
    if(!hasNext()) 
     throw new NoSuchElementException(); 
    return hash.data[nextIndex++]; << HERE OCCURS THE ERROR 
    } 
} 

Этот класс содержится в коллекции.

«несовместимые типы - нашли блок, но ожидается, блок»

+1

Это будет невозможно ответить, не видя фактического сообщения об ошибке (или ** сообщений **) и фактического исходного кода, выделяющего строку, в которой произошла ошибка. –

+0

частный класс unitHashIterator инвентарь Iterator { частный блокHash hash; private int nextIndex; частный блокHashIterator (unitHash u) { hash = u; nextIndex = 0; } ... общественное устройство рядом() { если бросить новый NoSuchElementException() (hasNext (!)); return hash.data [nextIndex ++]; << ЗДЕСЬ ОШИБКА ОШИБКИ } ... } Этот класс содержится в коллекции. 'несовместимые типы - найденный модуль, но ожидаемый модуль' – Alex

+0

'hash.data [nextIndex ++]' возвращает то, что именно? Что такое 'hash.data'? –

ответ

2

Независимо от определения unitHash, она не может быть гарантировано содержать элементы единицы типа, поскольку unitHash не параметризованных над типами но unitHashIterator. Я подозреваю, что вы либо хотели написать class unitHashIterator, а не class unitHashIterator<unit>, или private unitHash<unit> hash;, а не private unitHash<unit> hash;.

сообщение об ошибке вы получаете, вероятно, потому, что компилятор рассчитывает вернуть что-то из того же типа, что и тип переменной unit, но hash возвращает что-то какой-то конкретный тип (не тип переменной), что случается, также будет называться unit ,

+0

Изменение заголовка класса исправлено. Благодаря! – Alex

Смежные вопросы