這是我第一次發佈的問題。我有一個相當複雜的OQL查詢,它列出了我們包中加載的類的靜態字段。我在查看Java 1.6.0_24的'jhat'時看到的一個問題是'unique'函數無法按預期工作。我期望Java中'jhat'的OQL'獨特'功能麻煩1.6.0_24
select unique(['a', 'b', 'c', 'a'])
要返回['a','b','c'],而是返回['a'],wtf?
如果任何人的興趣與實際完全查詢(替換「com.mydomain」你喜歡什麼):
select cl.name + ' -- ' + unique(map(filter(referees(cl), "classof(it).name != 'java.lang.Class' && classof(it).name != 'java.lang.String' && classof(it).name != 'sun.misc.Launcher$AppClassLoader' && classof(it).name != 'java.security.ProtectionDomain' && classof(it).name != '[Ljava.security.cert.Certificate;' && classof(it).name != 'sun.plugin2.applet.JNLP2ClassLoader'"), "classof(it).name")).join(', ')
from instanceof java.lang.Class cl
where /com.mydomain./(cl.name) && ! /com.mydomain.xs.protobuf./(cl.name)
&& length(filter(referees(cl), "classof(it).name != 'java.lang.Class' && classof(it).name != 'java.lang.String' && classof(it).name != 'sun.misc.Launcher$AppClassLoader' && classof(it).name != 'java.security.ProtectionDomain'")) > 0;
這似乎是返回最後一個元素爲: 「選擇唯一的([ 'A', 'B', 'A', 'Q'])」 返回[ 'Q'] – karmakaze 2011-05-16 19:21:19