在没有IDE(集成开发环境)的帮助下调试期间,我想确定一个对象的类。问题是该对象被定义为一个接口,我想确定实现此接口的Object的类。所以例如我想在下面的setter方法中打印语句来打印实现的类名:
public void setSomeObject(InterfaceType someObject)
{
m_Object = someObject;
System.out.println(someObject.getClass().getName());
}
我正在测试此代码示例,并将就此问题提供更多反馈。根据java.lang.Class和java.lang.Object api的文档,我相信将打印接口名称而不是实现此接口的类。
我的问题是如何打印实现类的名称而不是上面代码示例中的接口?
答案 0 :(得分:15)
我相信将打印接口名称而不是实现此接口的类。
这不正确:getClass().getName()
将打印该类的名称。 Javadoc非常明确:
public final Class<?> getClass()
返回此Object的运行时类。
答案 1 :(得分:1)
使用该语句,您将打印该对象的运行时类,而不是接口。但是,如果使用调试器,则不需要System.out
语句。您可以放置断点并在调试器中查看变量。调试器将向您显示对象的运行时类