我自己的OSS軟件的無恥插件:https://bitbucket.org/stevevls/metapossum-scanner/wiki,在maven central中可用。
的典型應用案例爲這個圖書館是做事情喜歡找實現這樣的類:
Set<Class<? extends MyDiscoverableHelper>> implementingClasses = new ClassesInPackageScanner()
.findImplementers("com.mypackage.service.impl", MyDiscoverableHelper.class);
或註解類是這樣的:
Set<Class> entityClasses = new ClassesInPackageScanner()
.findAnnotatedClasses("com.mypackage.datamodel", javax.persistence.Entity.class);
但選擇策略可以被交換通過實現一個接口並將其傳遞給掃描儀。如果你正在嘗試做的是找到名稱類,代碼片段是這樣的:
Set<Class> entityClasses = new ClassesInPackageScanner().setResourceNameFilter(new ResourceNameFilter() {
public boolean acceptResourceName(java.lang.String packageName, java.lang.String fileName) {
return fileName.equals("MyClass.class");
}
}).scan("foo");
我前一段時間寫了這個庫,因爲我從來沒有發現,我喜歡探索包的實現。有許多庫都有自己的內部API,但是我沒有知道它們將它打包在一個漂亮的API中。
另外,探索軟件包實際上很難得到正確的結果。這並不像起初看起來那麼直截了當!
公共的Java API不提供任何東西。該包始終是Java中類的不可分割的一部分。據我所知,沒有一個API函數可以接受或返回一個從包中分離出來的類名。 – x4u 2011-06-01 17:57:03