2013-04-04 87 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