Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何打印对象';s实现的类_Java_Interface_Implementation - Fatal编程技术网

Java 如何打印对象';s实现的类

Java 如何打印对象';s实现的类,java,interface,implementation,Java,Interface,Implementation,在没有IDE(集成开发环境)帮助的调试期间,我想确定对象的类。问题是对象被定义为一个接口,我想确定实现这个接口的对象的类。因此,例如,我想打印以下setter方法中的语句,以打印实现的类名: public void setSomeObject(InterfaceType someObject) { m_Object = someObject; System.out.println(someObject.getClass().getName()); } 我正在测试这个代码示例,并将

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

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上运行代码有困难,我添加了调试语句。因此,请假设我没有调试器,那么就让您的语句保持原样,因为它将打印类的名称,而不是接口的名称