Как найти модуль Integer (Generic) в Java - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть Dual LinkedList (DLL), который я хочу разделить на две DLL s, одна с только нечетными числами, а другая с четными. Но я получаю сообщение об ошибке при попытке ((Generic)%2==0)

Сообщение об ошибке: метод parseInt(E) не определен для типа DLL<E>

public DLL parni() {
    DLL<E>niza = new DLL<E>();
    DLLNode<E>tmp = first;

    while(tmp.succ != null) {
        if((parseInt(tmp.element)) % 2 != 0) {
            niza.insertLast(tmp.element);
            delete(tmp);
        }
        tmp = tmp.succ;
    }
}

tmp.element является родовым типом E

Кстати, я попытался добавить суперкласс Number в классе DLL

class DLL<E extends Number>

Есть советы?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Если E расширяет java.lang.Number, вы можете попробовать это так:

if(tmp.element.intValue() % 2 != 0)
0 голосов
/ 19 ноября 2018

Простой: вы написали свой собственный класс DLL<E extends Number>.

Теперь вы написали код, который намеревается вызвать метод parseInt() , принадлежащий , к вашей собственной DLL класса.

Компилятор говорит вам:

Метод parseInt (E) не определен для типа DLL

, который вы еще не написали для этого метода.

Другими словами: если вы намереваетесь иметь метод с таким именем в своем собственном классе, то вы должны добавить такой метод в свой класс.Пока что E универсальный параметр не имеет никакого значения.Как и любой другой метод, который вы собираетесь вызывать для объекта, этот метод должен существовать в соответствующем классе.

Кроме того: не используйте имена, такие как «DLL».Не сокращайте названия классов.Их имена сообщают читателям, а DLL ничего не сообщает.Назовите это DualLinkedList, например.

...