Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态获取java包中实现接口的每个类_Java_Reflection_Package - Fatal编程技术网

动态获取java包中实现接口的每个类

动态获取java包中实现接口的每个类,java,reflection,package,Java,Reflection,Package,我在一个包中有几个类,它们都实现了相同的接口。我希望动态获取所有这些类,以执行一个方法。 这在java中可能吗?如果没有,我怎么能做类似的事情。 我应该使用反射吗 谢谢您可以使用extcos库。 有关更多详细信息,请参阅上述链接 Set<Class<? extends MyInterface>> classes = new HashSet<Class<? extends MyInterface>>(); ComponentScanner

我在一个包中有几个类,它们都实现了相同的接口。我希望动态获取所有这些类,以执行一个方法。 这在java中可能吗?如果没有,我怎么能做类似的事情。 我应该使用反射吗


谢谢

您可以使用extcos库。 有关更多详细信息,请参阅上述链接

Set<Class<? extends MyInterface>> classes = new HashSet<Class<? extends MyInterface>>();

    ComponentScanner scanner = new ComponentScanner();
    scanner.getClasses(new ComponentQuery() {

        protected void query() {
            select().
            from("my.package1").
            andStore(thoseImplementing(MyInterface.class).into(classes)).
            returning(none());
        }
    });

set这是否回答了您的问题?你永远不应该使用反射,除非你知道你在做什么,它有什么缺点。除此之外,我不清楚你想做什么。“动态获取所有类”是什么意思?@Amongalen抱歉,如果不清楚,我会尽量解释得更好。我在一个包中有几个类,我想循环这个包并为每个类执行一个给定的方法。知道每个类都实现一个接口。@AlexandruSomai是的,它实现了,thanks@AlexandruSomai尽管你可以使用反射,但在99%的情况下,人们试图用错误的方式来解决问题。你能解释一下为什么你想让一个接口的所有实现在它们上面执行一个方法吗?