gpt4 book ai didi

java - 从抽象类中检索数据

转载 作者:行者123 更新时间:2023-12-01 05:28:36 24 4
gpt4 key购买 nike

我在访问某些数据时遇到困难。我正在使用YCSB与许多不同的数据库对话,例如 Cassandra 和 MongoDB。

我真正可以修改的唯一类是我的“Workload”类,它正在执行一些插入和读取操作。我用来从数据库读取的方法在类中:

public void doRead(DB db)
{
String keyname = buildKeyName(keynum);
System.out.println(keyname);
HashSet<String> fields = null;

if (!readallfields)
{
// read a random field
String fieldname = "field" + fieldchooser.nextString();
fields = new HashSet<String>();
fields.add(fieldname);
}

db.read(table,keyname,fields,new HashMap<String,ByteIterator>());
}

我尝试修改代码,以便可以读取 HashMap 的内容。我删除了 db.read 行并将其替换为

HashMap<String, ByteIterator> kv_hashmap = new HashMap<String, ByteIterator>();
db.read(table, keyname, fields, kv_hashmap);

然后尝试从 kv_hashmap 读取:

System.out.println(kv_hashmap.get(fields));

但是 db.read 仅返回一个 int。 DB 是一个公共(public)抽象类,我不想修改它,它的目的是与各种数据库进行通信:

这就是 db.read 所调用的:

public abstract int read(String table, String key, Set<String> fields, HashMap<String,ByteIterator> result);

返回,引用 javadoc:

Zero on success, a non-zero error code on error or "not found".

我需要从 kv_hashmap 读取值。我不明白为什么我无法访问它的值。

最佳答案

我查看了 DB 类的实现,javadoc 还说:

 @param result A HashMap of field/value pairs for the result

但是,我还查看了 BasicDB,它扩展了 DB - 它的主体只是打印出传入的字段。

我建议您做的是打印传递到您的方法中的 DB 的实际具体类,并查看该类在 read 方法中实际执行的操作,例如:

System.out.println(Test.class.getName());

然后查看显示的任何类的 read 方法 - 如果它没有填充 result HashMap(与 BasicDB 一样)实现)那么就不会有任何东西供你阅读

关于java - 从抽象类中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9389528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com