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

问题描述 投票:0回答:5

假设我有这个代码

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 types hashmap alias
5个回答
81
投票

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>


18
投票

Java 中没有

typedef
等价物,并且别名类型也没有通用的习惯用法。我想你可以做类似的事情

class StringMap extends HashMap<String, String> {}

但这并不常见,并且对于程序维护人员来说并不明显。


13
投票

虽然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/


4
投票

最接近的一个可以想到的是制作一个像这样的包装类

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

我真的希望 Java 有声音类型别名功能。


1
投票

Java 中不存在类似的东西。您也许可以使用 IDE 模板或自动完成功能执行某些操作,并期待 Java 7 中的(有限)泛型类型推断

© www.soinside.com 2019 - 2024. All rights reserved.