如何打印对象的实现类

时间:2012-01-27 20:37:21

标签: java interface implementation

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

public void setSomeObject(InterfaceType someObject) 
{
   m_Object = someObject;
   System.out.println(someObject.getClass().getName());
}

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

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

2 个答案:

答案 0 :(得分:15)

  

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

这不正确:getClass().getName()将打印该类的名称。 Javadoc非常明确:

  

public final Class<?> getClass()

     

返回此Object的运行时类。

答案 1 :(得分:1)

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