在接口上使用.getclass()

时间:2011-11-01 02:18:51

标签: java

这可能是一个非常简单的问题。 嘿,我是一名学生,对java很新,我正在学习明天的期中考试。我坚持的一个实践问题是当你有类似的东西时会发生什么:

System.out.println(interface1.getClass().getName());

interface1已声明为interface1 = class1。我很确定它会打印“class1”而不是“interface1”,因为interface1不是一个类吗?但我不确定,因为问题还说如果它产生编译时错误,那就说出来。我们的教授以欺骗我们而闻名,一旦我回到测验并仍然对我错误的原因感到困惑。

1 个答案:

答案 0 :(得分:12)

这不是因为它是一个你得到class1的接口,而是因为getClass()将解析为实例的运行时类。由于您已将其创建为class1,因此这是运行时类型。不会给你一个编译时错误。

通过反射可以获得接口的Class对象。

或者,您可以通过class关键字直接访问该课程:

String className = Runnable.class.getName();