反射api-查找子类类型



嗨,我正试图找出子类,形成一个超类对象。

if Class Super is the super class.
and Class Sub1 and Class Sub2 extends Class Super.(all classes are public)
Lets say I have a object of Super type as
Super superObject = new Sub1();

现在对于superObject,是否可以找到superObject在Java中扩展的子类?

由于"SuperClass不会知道它有任何子类",你能告诉我我的上述问题一开始是否有效,或者我是否缺少任何基本概念

提前谢谢。

getClass()方法将在运行时返回对象的具体类型,而不是引用类型。所以简单地做:

Super superObject = new Sub1();
Class<? extends Super> klass = superObject.getClass();

会给你Sub1.class从你的问题中还不清楚你想用它做什么。你可以简单地对它调用getName(),检查你的其他引用是否是相同类型的,等等。

您的问题"是否有可能找到superObject在Java中扩展的子类?"毫无意义。

无论如何,我想你正在寻找Class.isAssignableFrom()可能在这方面有所帮助。

用法:

superClass.isAssignableFrom(subClass);

文档:

确定类或接口由该Class对象表示的是与超类相同或是超类类或指定的表示的接口类参数。

参考

您想要此方法:

boolean isList = Subclass.isAssignableFrom(Superclass);

来自JavaDoc:

确定此class对象表示的类或接口是否与指定的class参数表示的类或者接口相同,或者是该类或者接口的超类或者超接口。如果是,则返回true;否则返回false。如果此Class对象表示基元类型,则如果指定的Class参数正是此Class对象,则此方法返回true;否则返回false。

参考:

 Class.isAssignableFrom(Class)

相关内容

  • 没有找到相关文章

最新更新