У меня довольно простой вопрос, но пока ничего не найдено.Java - создайте HashMap в перегруженном вызове конструктора
Я пытаюсь создать два класса конструкторов.
Первый конструктор получает 2 строки и один HashMap и инициализирует переменные класса.
public Foo(String a, String b, HashMap<String, String> c) {
this.a = a;
this.b = b;
this.c = c;
}
Второй конструктор должен получить только 2 строки и создать «по умолчанию» -HashMap.
Обычно вы просто вызываете this()
со значением по умолчанию внутри, но я не смог найти способ сделать это с помощью HashMap
.
public Foo(String a, String b) {
this(a, b, new HashMap<String, String>().put("x", "y").put("f","g"));
}
Eclipse, отмечает ошибку:
Type mismatch: cannot convert from
String
toHashMap<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);
}
Любые идеи, как это решить?
Худший случай Мне пришлось дублировать код, но мне было интересно, нет ли лучшего способа.
Ваша ссылка на 'c' все равно будет такой же. вы можете просто использовать 'this (a, b, new HashMap());' как ваш первый оператор и продолжать работать с 'c'. –
SomeJavaGuy
Карта 's put возвращает текущее значение (V). Следовательно, вы получаете TypeMismatch. –
amdalal