2013-04-04 89 views
0

我有兩個項目包含在我的genxml項目中,framework1framework2Framework2framework1的更新版本,它們都具有類AbstractScreenTest.class。無論如何,在下面的代碼中我可以指定哪個 項目我想與之交互?當多個同類名稱的類別標識具體類別

ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true); 
provider.addIncludeFilter(new AssignableTypeFilter(AbstractScreenTest.class)); 
Set<BeanDefinition> components = provider.findCandidateComponents(candiatePackage); 

for (BeanDefinition component : components){ 
    cls = Class.forName(component.getBeanClassName()); 
    classList.add(cls.getName().toString()); 
} 

回答

0

您可以在@Deprecated註釋添加到您的舊(過時)類和驗證組件不包含已過時的註釋。

for (BeanDefinition component : components){ 

    cls = Class.forName(component.getBeanClassName()); 

    if (!cls.isAnnotationPresent(Deprecated.class) { 
     classList.add(cls.getName().toString()); 
    } 
} 

當然,這是假設,有沒有你要添加到您的類列表中的任何其他過時的類。在這種情況下,你可以編寫一個新的註釋來標記你的舊類,儘管它真的很適合擺脫對過時類的依賴。

+0

如果有多個版本(2+)的框架,我該怎麼辦?它們都在使用中(沒有被棄用)。 – Colin747 2013-04-05 00:20:18

+0

你是否擁有這個框架?僅僅因爲它們在使用並不意味着它們不能被棄用。除非您的用戶使用舊版Java,否則我不明白爲什麼需要支持過時的類。 如果您不擁有該框架,並且無法使用註釋對其進行戳記,我所能做的就是使findCandidateComponents類忽略特定組件。 – meddle 2013-04-05 00:28:57

+0

我沒有自己的框架,但我可以對其進行微調。問題在於不同的人將在不同的框架版本上工作,這些框架最終會合並在一起。我需要支持正在使用的框架的所有版本 – Colin747 2013-04-05 00:32:47