是否可以在OQL
中检索属于一个包的所有对象?或者我可以用wildcards
查询吗?
正如@haridsv建议的那样,我尝试过:
SELECT * from "com.example.*"
和
SELECT a from "com.example..*"
但在CCD_ 3中,它抱怨不存在这样的包。
甚至
SELECT a from "java.io.File" a
失败。
谢谢!
塞尔达诺。
您可以使用这样的正则表达式:
SELECT * from "<packagename>.*"
如果包名称是"java.io",您将使用:
SELECT * from "java.io..*"
注意正则表达式周围的引号以及路径中的点是如何受到保护的。
我在VisualVM OQL帮助中找到了答案。
select filter(heap.classes(), "/com.example./(it.name)")
来自VisualVM有限文档:
- 选择名称模式为java.net的所有类*
select filter(heap.classes(), "/java.net./.test(it.name)")
https://visualvm.github.io/documentation.html
诀窍在于";test(it.name)";