如何在Java中创建一些变量类型别名

时间:2011-04-09 10:13:35

标签: java types hashmap alias

假设我有这段代码

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的新人。

5 个答案:

答案 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