Карта внутри карты Java - PullRequest
       2

Карта внутри карты Java

0 голосов
/ 14 февраля 2012

Я новичок в Java.Я пытаюсь передать параметры, где карта находится внутри другой карты, однако я получаю сообщение об ошибке «ожидаемый идентификатор» (найдено int, требуется ссылка).

Это код:

package learning;
import java.util.*;
import java.text.SimpleDateFormat; 

    public interface Policy {

        public void toggleApp(Map<Map<Appliance,SimpleDateFormat>,int>toggle); *error here*

    }

     class Appliance
    {
       String appName = ""; 
       int appID; 
       double demand = 0.0;

    } 

Ответы [ 5 ]

4 голосов
/ 14 февраля 2012

Нельзя предоставить примитивные типы (например, int) в качестве параметров типов для универсальных классов.

Изменить

Map<Map<Appliance,SimpleDateFormat>,int>
                                    ^^^

на

Map<Map<Appliance,SimpleDateFormat>,Integer>
                                    ^^^^^^^

Также обратите внимание , что аргумент первого типа - это тип ключа , а параметр второго типа - это тип значений .У меня такое ощущение, что вы могли поменять их местами в своем коде.

Дополнительная информация:

2 голосов
/ 14 февраля 2012

Проблема в int как типе значения карты!int является примитивом, а Java Generics работает только для ссылочных типов.

Замените int на Integer, и он будет работать: -).

Поскольку Java имеет автоматический бокс / распаковка , вы можете использовать обычные операции, и он автоматически преобразует int s в Integer s для вас.map.put(key, 1) будет работать.Это будет Integer.intValue(1), что является Integer.

1 голос
/ 14 февраля 2012

Измените int на Integer.

Дженерики могут принимать только ссылочные типы в качестве параметров.

1 голос
/ 14 февраля 2012

Вы не можете параметризовать универсальный (например, Map<K,V>) для примитивного типа (например, int). Попробуйте вместо этого использовать класс-оболочку, например Integer:

Map<Map<Appliance,SimpleDateFormat>,Integer>
0 голосов
/ 14 февраля 2012

Вы не можете иметь int (основной тип) в Map, он принимает только Objects:

Map<Map<Appliance,SimpleDateFormat>, Integer > toggle;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...