public static List<Class<?>> scan(Context ctx, String entityPackage) { List<Class<?>> classes = new ArrayList<Class<?>>(); try { PathClassLoader classLoader = (PathClassLoader) Thread .currentThread().getContextClassLoader(); DexFile dex = new DexFile(ctx.getPackageResourcePath()); Enumeration<String> entries = dex.entries(); while (entries.hasMoreElements()) { String entryName = entries.nextElement(); if (entryName.contains(entityPackage)) { Class<?> entryClass = Class.forName(entryName, true,classLoader);//疑问:Class.forName(entryName);这种方式不知道为什么返回null,哪位大神知道原因,请指点一下小弟吧 感激不尽 DatabaseTable annotation = entryClass.getAnnotation(DatabaseTable.class); if (annotation != null) { classes.add(entryClass); } } } } catch (Exception e) { e.printStackTrace(); } return classes; }
?