SORU
21 EYLÜL 2009, PAZARTESİ


Nasıl bir sınıf içinde bir Java paketi tüm sınıflar okuyabilirim?

Sınıfları Java paketinde okumak istiyorum. Bu sınıf, sınıf. Java program bu görev doğrudan yapmak istiyorum. Yapmak için basit bir yol biliyor musunuz?

List<Class> classes = readClassesFrom("my.package")

CEVAP
17 Mart 2011, PERŞEMBE


Eğer sınıf Spring varsa aşağıdakileri yap.

XmlRootElement ile açıklamalı bir paket: tüm sınıflar bulabilirsiniz

private List<Class> findMyTypes(String basePackage) throws IOException, ClassNotFoundException
{
    ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
    MetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory(resourcePatternResolver);

    List<Class> candidates = new ArrayList<Class>();
    String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX  
                               resolveBasePackage(basePackage)   "/"   "**/*.class";
    Resource[] resources = resourcePatternResolver.getResources(packageSearchPath);
    for (Resource resource : resources) {
        if (resource.isReadable()) {
            MetadataReader metadataReader = metadataReaderFactory.getMetadataReader(resource);
            if (isCandidate(metadataReader)) {
                candidates.add(Class.forName(metadataReader.getClassMetadata().getClassName()));
            }
        }
    }
    return candidates;
}

private String resolveBasePackage(String basePackage) {
    return ClassUtils.convertClassNameToResourcePath(SystemPropertyUtils.resolvePlaceholders(basePackage));
}

private boolean isCandidate(MetadataReader metadataReader) throws ClassNotFoundException
{
    try {
        Class c = Class.forName(metadataReader.getClassMetadata().getClassName());
        if (c.getAnnotation(XmlRootElement.class) != null) {
            return true;
        }
    }
    catch(Throwable e){
    }
    return false;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Learn word 2013 tutorials

    Learn word 2

    5 AĞUSTOS 2014
  • pucksz

    pucksz

    24 Mart 2006
  • Shanice Caruthers

    Shanice Caru

    27 EKİM 2011