Подтвердить что ты не робот

Как создать псевдоним типа переменной в Java

скажем, у меня есть этот код

Map<String, String> list = new HashMap<String, String>();
list.put("number1", "one");
list.put("number2", "two");

как я могу сделать некоторый "псевдоним" типа

Map<String, String>

к чему-то, что легче переписать, например

// may be something like this
theNewType = HashMap<String, String>;

theNewType list = new theNewType();
list.put("number1", "one");
list.put("number2", "two");

В основном, мой вопрос заключается в том, как создать "псевдоним" для некоторого "типа", поэтому я могу упростить запись и упростить, когда вам нужно изменить весь программный код.

Спасибо, и извините, если это глупый вопрос. Я новичок в Java.

4b9b3361

Ответ 1

В Java нет псевдонимов. Вы можете расширить класс HashMap классом следующим образом:

public class TheNewType extends HashMap<String, String> {
    // default constructor
    public TheNewType() {
        super();
    }
    // you need to implement the other constructors if you need
}

Но имейте в виду, что это будет класс, он не будет таким же, как вы набираете HashMap<String, String>

Ответ 2

В Java нет эквивалента typedef, и нет общей идиомы для типов псевдонимов. Я полагаю, вы могли бы сделать что-то вроде

class StringMap extends HashMap<String, String> {}

но это не является обычным явлением и не будет очевидным для сопровождающего программы.

Ответ 3

Хотя Java не поддерживает это, вы можете использовать трюк generics для имитации.

class Test<I extends Integer> {
    <L extends Long> void x(I i, L l) {
        System.out.println(
            i.intValue() + ", " + 
            l.longValue()
        );
    }
}

Источник: http://blog.jooq.org/2014/11/03/10-things-you-didnt-know-about-java/

Ответ 4

В Java ничего подобного не существует. Возможно, вы сможете что-то сделать с шаблонами IDE или автозаполнением, и с нетерпением ждем (ограничено) вывода типа generics в Java 7.

Ответ 5

Ближайшим, о котором можно подумать, является создание класса-оболочки таким образом

class NewType extends HashMap<String, String> {
     public NewType() { }
}

Я действительно хочу, чтобы у Java была функция сглаживания звукового типа.