2012-01-27 68 views
3

在没有IDE(集成开发环境)的帮助下进行调试时,我想确定一个对象的类。问题在于对象被定义为一个接口,我想确定实现此接口的对象的类。因此,举例来说,我想打印语句在下面的setter方法来打印实现类名:如何打印对象的实现类

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

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

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

+0

这是什么问题?它会打印什么? – amit 2012-01-27 20:40:19

+3

为什么你不会在写这篇文章之前运行它并找出它?因为,真的没有问题...... – AHungerArtist 2012-01-27 20:40:36

+1

这不是一个问题。它会打印班级的名字。 – smparkes 2012-01-27 20:40:39

回答

1

使用该语句,您将打印该对象的运行时类,而不是界面。但是,如果您使用调试器,则不需要该System.out语句。您可以放置​​一个断点并在调试器中查看您的变量。调试器会告诉你什么是你的对象的运行时类是

+0

在这种特殊情况下,由于难以在IDE上运行代码,因此我添加了调试语句。所以请假设我没有调试器。 – Vivek 2012-01-27 20:54:35

+0

然后,请保持原样,因为它将打印类的名称而不是界面 – Robin 2012-01-27 21:03:06

14

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

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

public final Class<?> getClass()

返回运行此对象的类。