Замена карты> с коротким типом - PullRequest
1 голос
/ 27 сентября 2019

У меня есть карта 0f Карта 0f Список

Я создал такой интерфейс для краткости этого

public interface ShortName extends Map<String, Map<String, List<String>>>

Но когда я пытаюсь создать экземпляр реального объекта, он дает мне ClassCastExcpetion

ShortName testObj = (ShortName) new HashMap<String, Map<String, List<String>>>();

Есть ли способ сделать шрифт для карты

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

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

Вы можете сделать public static class NewType extends HashMap<String, Map<String, List<String>>> implements ShortName {}.И тогда вы можете использовать приведение к ShortName как в ShortName testObj = (ShortName) new NewType();

import java.util.Map;
import java.util.HashMap;
import java.util.List;

public class MyClass {
    public static void main(String args[]) {

        ShortName testObj = (ShortName) new NewType();
        System.out.println("ok");
    }

    public interface ShortName extends Map<String, Map<String, List<String>>> {

    }

    public static class NewType extends HashMap<String, Map<String, List<String>>> implements ShortName {}
}
0 голосов
/ 27 сентября 2019

В Java нет концепции псевдонимов типов (см. Этот вопрос ), однако вы можете создать новый класс другого типа, который расширит ваш Map;

class NewType extends HashMap<String, Map<String, List<String>>>

Но это не «сокращение» для этого типа, это вообще новый тип - поэтому приведение не будет работать и т. Д.

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