想知道某个类是否实现了特定的接口

时间:2014-02-21 13:51:24

标签: java reflection

我有一个程序要求用户输入String,该程序应该是实现Message接口的类的名称。

所有java类都在包ist.ap.labs

代码就是这个:

Class cl = null;

try {
    cl = Class.forName(className);
} catch (ClassNotFoundException clnfe) {
    System.out.println("Class not found!");
    System.exit(1);
}

if (!cl.isAssignableFrom(ist.ap.labs.Message)) {
    System.out.println("Class not implements Message!");
    System.exit(1);
}

但我总是收到错误cannot find a symbol:class labs

有任何帮助吗?

2 个答案:

答案 0 :(得分:0)

您必须引用类文字,而不仅仅是类名:

if (!cl.isAssignableFrom(ist.ap.labs.Message.class)) { ... }
                                          //  ^ Here

编辑:是的,Jon Skeet在评论中再次说得对:你必须交换clist.ap.labs.Message.class来执行所需的测试。

答案 1 :(得分:0)

你可以做这样的事情

        Class<?>[] interfaces = Child.class.getInterfaces();
        List list = Arrays.asList(interfaces);
        if(list.contains(Interface.class)){
            System.out.println("true....");
        }

这会告诉你该类是否实现了接口。