Как создать псевдоним типа переменной в 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.
Ответы
Ответ 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 была функция сглаживания звукового типа.