假设我有这段代码
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的新人。
答案 0 :(得分:42)
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>
答案 1 :(得分:10)
Java中没有typedef
等价物,并且对于别名类型没有常见的习惯用法。我想你可以做一些像
class StringMap extends HashMap<String, String> {}
但这并不常见,对程序维护者来说并不明显。
答案 2 :(得分:8)
尽管Java不支持此功能,但您可以使用泛型技巧来模拟它。
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/
答案 3 :(得分:4)
最接近的人可以想到的是创建一个像这样的包装类
class NewType extends HashMap<String, String> {
public NewType() { }
}
我真的希望Java有一个声音类型别名功能。
答案 4 :(得分:1)
Java中没有类似的东西。您可以使用IDE模板或自动完成执行某些操作,并期待Java 7中的(有限的)generics type inference。