Я не верю, что heap.forEachClass () предназначен для использования в операторе выбора, по крайней мере, не напрямую.Примите во внимание тот факт, что он ничего не возвращает:
var result=heap.forEachClass(function(it){return it;});
typeof result
//returns undefined
OQL, используемый в jhat и VisualVM, поддерживает обычный старый JavaScript, так же как и «запрос», который я использовал выше.Я считаю, что heap.forEachClass () находит более широкое применение в запросах в стиле JavaScript или в функциях JavaScript в запросах типа select.
Тем не менее, я не знаю, почему эта функция существует со времен кучи.Перечисление classes () намного проще в использовании, как с запросами в стиле select, так и с простыми JavaScript.
Вы даже можете воссоздать ту же функциональность, что и heap.forEachClass (), с помощью следующей функции JavaScript:
function heapForEachClass(func){
map(heap.classes(),func)
return undefined;
}
Любые примеры запросов, которые я мог бы вам предоставить, скорее всего, будут проще написать с помощью heap.classes ().Например, вы можете использовать heap.forEachClass (), чтобы получить список всех классов:
var list=[];
heap.forEachClass(function(it){
list.push(it);
});
list
, но это сложнее, чем с помощью heap.classes ():
select heap.classes()
или просто
heap.classes()