Java 如何打印对象';s实现的类
在没有IDE(集成开发环境)帮助的调试期间,我想确定对象的类。问题是对象被定义为一个接口,我想确定实现这个接口的对象的类。因此,例如,我想打印以下setter方法中的语句,以打印实现的类名:Java 如何打印对象';s实现的类,java,interface,implementation,Java,Interface,Implementation,在没有IDE(集成开发环境)帮助的调试期间,我想确定对象的类。问题是对象被定义为一个接口,我想确定实现这个接口的对象的类。因此,例如,我想打印以下setter方法中的语句,以打印实现的类名: public void setSomeObject(InterfaceType someObject) { m_Object = someObject; System.out.println(someObject.getClass().getName()); } 我正在测试这个代码示例,并将
public void setSomeObject(InterfaceType someObject)
{
m_Object = someObject;
System.out.println(someObject.getClass().getName());
}
我正在测试这个代码示例,并将就此问题提供更多反馈。根据java.lang.Class和java.lang.Object api的文档,我相信将打印接口名称,而不是实现该接口的类
我的问题是如何打印实现类的名称而不是上面代码示例中的接口?使用该语句,您将打印该对象的运行时类,而不是接口。但是,如果使用调试器,则不需要该
System.out
语句。您只需放置一个断点并在调试器中查看变量即可。调试器将向您显示对象的运行时类
我相信将打印接口名,而不是实现此接口的类
这不正确:getClass().getName()
将打印类的名称。关于这一点,我们的立场相当明确:
public final类getClass()
返回此对象的运行时类
问题是什么?它会打印什么?你为什么不在写这篇文章之前运行它并找出答案呢?事实上,这是毫无疑问的……这不是一个问题。它将打印类的名称。我的问题是,如何打印实现的类的名称而不是上面代码示例中的接口?这就是为什么您首先尝试(并阅读javadoc)。在这种特殊情况下,由于在IDE上运行代码有困难,我添加了调试语句。因此,请假设我没有调试器,那么就让您的语句保持原样,因为它将打印类的名称,而不是接口的名称