Java Class Find getAllAssignedClass(Class cls)

Here you can find the source of getAllAssignedClass(Class cls)

Description

get All Assigned Class

License

Apache License

Declaration

public static List<Class<?>> getAllAssignedClass(Class<?> cls) throws IOException, ClassNotFoundException 

Method Source Code


//package com.java2s;
//License from project: Apache License 

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class Main {

    public static List<Class<?>> getAllAssignedClass(Class<?> cls) throws IOException, ClassNotFoundException {
        List<Class<?>> classes = new ArrayList<Class<?>>();
        for (Class<?> c : getClasses(cls)) {
            if (cls.isAssignableFrom(c) && !cls.equals(c)) {
                classes.add(c);/*w  w w.j a  v  a  2s  . c om*/
            }
        }
        return classes;
    }

    public static List<Class<?>> getClasses(Class<?> cls) throws IOException, ClassNotFoundException {
        String pk = cls.getPackage().getName();
        String path = pk.replace('.', '/');
        ClassLoader classloader = Thread.currentThread().getContextClassLoader();
        URL url = classloader.getResource(path);
        return getClasses(new File(url.getFile()), pk);
    }

    private static List<Class<?>> getClasses(File dir, String pk) throws ClassNotFoundException {
        List<Class<?>> classes = new ArrayList<Class<?>>();
        if (!dir.exists()) {
            return classes;
        }
        for (File f : dir.listFiles()) {
            if (f.isDirectory()) {
                classes.addAll(getClasses(f, pk + "." + f.getName()));
            }
            String name = f.getName();
            if (name.endsWith(".class")) {
                classes.add(Class.forName(pk + "." + name.substring(0, name.length() - 6)));
            }
        }
        return classes;
    }
}

Related

  1. findClasses(String path, String packageName)
  2. findClassesAnnotatedWith(String packageName, Class a)
  3. findClassesAssignableFrom(String packageName, Class assignableFrom)
  4. findClassLocation(Class context)
  5. findClassOriginFile(Class cls)
  6. getAllClasses(ClassLoader cl, String packageName)
  7. getAllClasses(String packageName)
  8. getAllClassesFromPackage(final String packageName)
  9. getAllClassesIn(String... packageNames)