假设我有这个代码
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 有点陌生。
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>
Java 中没有
typedef
等价物,并且别名类型也没有通用的习惯用法。我想你可以做类似的事情
class StringMap extends HashMap<String, String> {}
但这并不常见,并且对于程序维护人员来说并不明显。
虽然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/
最接近的一个可以想到的是制作一个像这样的包装类
class NewType extends HashMap<String, String> {
public NewType() { }
}
我真的希望 Java 有声音类型别名功能。
Java 中不存在类似的东西。您也许可以使用 IDE 模板或自动完成功能执行某些操作,并期待 Java 7 中的(有限)泛型类型推断。