如何打印对象的实现类

Viv*_*vek 7 java implementation interface

在没有IDE(集成开发环境)的帮助下调试期间,我想确定一个对象的类.问题是该对象被定义为一个接口,我想确定实现此接口的Object的类.所以我想在下面的setter方法中打印语句来打印实现的类名:

public void setSomeObject(InterfaceType someObject) 
{
   m_Object = someObject;
   System.out.println(someObject.getClass().getName());
}
Run Code Online (Sandbox Code Playgroud)

我正在测试此代码示例,并将提供有关此问题的更多反馈.根据java.lang.Class和java.lang.Object api的文档,我相信将打印接口名称而不是实现此接口的类.

我的问题是如何打印实现类的名称而不是上面代码示例中的接口?

NPE*_*NPE 17

我相信将打印接口名称而不是实现此接口的类.

这是不正确的:getClass().getName()将打印该类的名称.该的Javadoc是对这个很清楚:

public final Class<?> getClass()

返回此Object的运行时类.


Rob*_*bin 1

使用该语句,您将打印该对象的运行时类,而不是接口。但是,如果您使用调试器,则不需要该System.out语句。您只需放置一个断点并在调试器中查看变量即可。调试器将显示对象的运行时类是什么