Проблемы Java Generics - PullRequest
       8

Проблемы Java Generics

1 голос
/ 23 марта 2011

У меня есть этот класс Entry ...

public class Entry <K, V> {
    private final K mKey;
    private final V mValue;

    public Entry() {  
        mKey = null;
        mValue = null;   
    }
}

Что произойдет, если я использую int в качестве mKey? Насколько я знаю, int не может быть нулевым!

Ответы [ 3 ]

6 голосов
/ 23 марта 2011

Переменная типа Integer может быть нулевой.int не может быть нулевым.Последний является примитивным типом, первый является ссылочным типом-оболочкой для работы с примитивами как с Объектом.Если вы используете это:

Entry<Integer, String> myEntry;

Тогда вы обязательно используете тип оболочки.Примитивы нельзя использовать в качестве параметров типа в Java, поэтому у вас не может быть, например, Entry<int, String> (он не скомпилируется).

1 голос
/ 23 марта 2011

Вы не можете использовать примитивы в качестве параметров типа.

0 голосов
/ 23 марта 2011

Параметры общего типа должны быть объектами, они не могут быть примитивами.Таким образом, вы можете использовать класс-оболочку Integer для mKey / mValue и установить для него значение null, но попытка использовать примитив int всегда приведет к ошибке компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...