小编Joh*_*ohn的帖子

Java - 在重载的构造函数调用中创建HashMap

我有一个非常简单的问题但到目前为止找不到任何东西.

我正在尝试创建两个类构造函数.
第一个构造函数获取2个字符串和一个HashMap并初始化类变量.

public Foo(String a, String b, HashMap<String, String> c) {
    this.a = a;
    this.b = b;
    this.c = c;
}
Run Code Online (Sandbox Code Playgroud)

第二个构造函数应该只获取2个字符串并创建一个"默认"-HashMap.

通常你只需要this()使用默认值调用,但我找不到用a做的方法HashMap.

public Foo(String a, String b) {
    this(a, b, new HashMap<String, String>().put("x", "y").put("f","g"));
}
Run Code Online (Sandbox Code Playgroud)

Eclipse标记错误:

类型不匹配:无法转换StringHashMap<String,String>

否则this()-call不能是函数中的第一个语句.

public Foo(String a, String b) {
    HashMap<String, String> c = new HashMap<String, String>();
    c.put("x", "y");
    c.put("f", "g");
    this(a, b, c);
}
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?

最糟糕的情况我不得不复制代码,但我想知道是否没有更好的方法.

java overloading hashmap constructor-overloading

3
推荐指数
1
解决办法
1230
查看次数