繁体   English   中英

如何获得实例的最特定类?

[英]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是更常规的方式,如果instBB的子类,则条件instB也将返回true。

您可能希望通过代码示例进一步解释您的用例,以获得更好的讨论。

对于编译时 ,我不知道有任何可能性。 这并不容易,因为它取决于控制流(仅看声明是不够的)。 但是,当您编写声明时,您决定只需要instB的A类接口/行为。

对于运行时 ,可以使用Kublai建议的getClass()instanceof 但是,在大多数情况下,您都不需要它:通过对类进行良好的设计,可以让动态分派区分大小写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM