这可能是一个非常简单的问题。 嘿,我是一名学生,对java很新,我正在学习明天的期中考试。我坚持的一个实践问题是当你有类似的东西时会发生什么:
System.out.println(interface1.getClass().getName());
interface1
已声明为interface1 = class1
。我很确定它会打印“class1”而不是“interface1”,因为interface1
不是一个类吗?但我不确定,因为问题还说如果它产生编译时错误,那就说出来。我们的教授以欺骗我们而闻名,一旦我回到测验并仍然对我错误的原因感到困惑。
答案 0 :(得分:12)
这不是因为它是一个你得到class1
的接口,而是因为getClass()
将解析为实例的运行时类。由于您已将其创建为class1
,因此这是运行时类型。不会给你一个编译时错误。
通过反射可以获得接口的Class
对象。
或者,您可以通过class
关键字直接访问该课程:
String className = Runnable.class.getName();