Вы должны иметь возможность запрашивать все коллекции или одну с помощью языка объектных запросов (OQL) в jhat .
Вы не можете обязательно вызывать произвольные методы, но вы можете написать несколько сложных запросов, используя доступные функции.
A. У Sundararajan есть несколько интересных постов в блоге на эту тему, которые демонстрируют, что вы можете сделать. См. здесь и здесь .
Например, вы можете найти все экземпляры java.util.HashMap
, имеющие ключ test со следующим запросом:
select s from java.util.HashMap s where contains(s.table, function(it) {
if (it && it.key && it.key.value && it.key.value.toString() == 'test') {
return true;
}
return false;
})
Это должно найти тот же ключ в java.util.concurrent.ConcurrentHashMap
:
select s from java.util.concurrent.ConcurrentHashMap s where contains(s.segments, function(it) {
if (!it || !it.table) {
return false;
}
var i, e;
for (i=0; i < it.table.length; i = i + 1) {
e = it.table[i];
if (e) {
return e.key && e.key.value && e.key.value.toString() == 'test';
}
}
return false;
})