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ş:
Nasıl alt sınıf adını bilmeden django ...
Nasıl Java içinde SINIF değiştirmek is...
Java sınıf yolu içinde birden fazla ka...
Nasıl&; derleme quot&; Java sınıf dosy...
Gerçekten nasıl okunur metin Java sını...