Java 如何检查继承链中是否存在特定的类类型

Java 如何检查继承链中是否存在特定的类类型,java,reflection,decorator,Java,Reflection,Decorator,我有一个类,它实现了decorator模式。我需要检查继承链中是否出现了特定的类。通常,我只使用instanceof 但是,我在开发期间没有类定义。换句话说,我在运行时将类名作为字符串获取。在这种情况下,如何检查继承链中出现的这个给定类名?首先,听起来很可怕。反思通常是一个非常糟糕的主意 编辑:正如@Holger在评论中指出的,动态检查类型层次结构也是一个非常糟糕的主意。遗憾的是,有不止一种新的语言功能正在为此而出现。呵呵。更一般地说,保持类型层次结构平坦。但这是一个全新的鱼壶。根据我的经验,这

我有一个类,它实现了decorator模式。我需要检查继承链中是否出现了特定的类。通常,我只使用instanceof


但是,我在开发期间没有类定义。换句话说,我在运行时将类名作为字符串获取。在这种情况下,如何检查继承链中出现的这个给定类名?

首先,听起来很可怕。反思通常是一个非常糟糕的主意

编辑:正如@Holger在评论中指出的,动态检查类型层次结构也是一个非常糟糕的主意。遗憾的是,有不止一种新的语言功能正在为此而出现。呵呵。更一般地说,保持类型层次结构平坦。但这是一个全新的鱼壶。根据我的经验,这是一种反映,通常并不总是如此,瑞士信贷!突出和促进混淆


话虽如此:当然,您需要完全限定的类名,尽管您可以探测一系列包。从那里,Class.forName方法将允许您恢复类对象,尽管如果您使用多个类装入器,它可能会变得更混乱。然后你只需要Class.isAssignableFrom。

我不会把反思作为坏主意,而是实际的需求,即在不知道X或Y的情况下,坚持X是Y的一个子类型,而不是让X以任何方式履行相关合同。