我有一个程序要求用户输入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
有任何帮助吗?
答案 0 :(得分:0)
您必须引用类文字,而不仅仅是类名:
if (!cl.isAssignableFrom(ist.ap.labs.Message.class)) { ... }
// ^ Here
编辑:是的,Jon Skeet在评论中再次说得对:你必须交换cl
和ist.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....");
}
这会告诉你该类是否实现了接口。