Я новичок в Котлине. Я не могу понять, почему Map DB не работает для меня с kotlin. Я попробовал Google, но это не помогло.
Gradle
dependencies {
compile(kotlin("stdlib-jdk8"))
implementation(group="org.mapdb", name= "mapdb", version= "3.0.7")
testCompile("junit", "junit", "4.12")
}
File.kt
import org.mapdb.DBMaker
fun main(array: Array<String>) {
val db = DBMaker.memoryDB().make()
val map = db.hashMap("map").createOrOpen()
map.put("a", "a")
db.close()
}
Ошибка: (7, 13) Kotlin: Несоответствие типов: выведенный тип - String, но
Ничего такого? ожидалось. Проектируемый тип HTreeMap
ограничивает использование общедоступного открытого веселья (ключ: K ?, значение: V?): V? определенный
в org.mapdb.HTreeMap
Ошибка: (7, 18) Kotlin: Несоответствие типов: выведенный тип - String, но
Ничего такого? ожидалось. Проектируемый тип HTreeMap
ограничивает использование общедоступного открытого веселья (ключ: K ?, значение: V?): V? определенный
в org.mapdb.HTreeMap
Но это работает с Java.
public static void main(String[] args) {
DB db = DBMaker.fileDB("java.db").fileMmapEnable().transactionEnable().make();
ConcurrentMap map = db.hashMap("map").createOrOpen();
map.put("a", "b");
map.put("a2", "b");
System.out.println(map);
System.out.println(map.getClass());
db.commit();
db.close();
DB db2 = DBMaker.fileDB("java.db").fileMmapEnable().transactionEnable().make();
ConcurrentMap map2 = db2.hashMap("map").open();
System.out.println(map2);
map2.forEach((o, o2) -> {
System.out.println(o+" = "+o2);
});
}