[英]How can I get the most specific class of an instance?
假设我有以下课程:
class A {}
class B extends A {}
A instA = new A();
A instB = new B();
现在,就Java而言,instB是A类型的。
我如何找出instB的实际类型?
您可以使用instB.getClass()
。 这将返回一个代表instB
的运行时类型的Class
对象。
资料来源: javadoc
您还可以对instanceof
使用以下条件检查:
if (instB instanceof B) {
//then we know it is of type B
}
instanceof
是更常规的方式,如果instB
是B
的子类,则条件instB
也将返回true。
您可能希望通过代码示例进一步解释您的用例,以获得更好的讨论。
对于编译时 ,我不知道有任何可能性。 这并不容易,因为它取决于控制流(仅看声明是不够的)。 但是,当您编写声明时,您决定只需要instB的A类接口/行为。
对于运行时 ,可以使用Kublai建议的getClass()
, instanceof
。 但是,在大多数情况下,您都不需要它:通过对类进行良好的设计,可以让动态分派区分大小写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.