java - 如何列出 Java 中对象扩展的所有类?

标签 java decorator

在 Java 中,我使用装饰器模式。有时 Object具有多种类型,因为它可以用许多类进行装饰。我怎样才能获得一个对象的所有不同类型?

abstract class: plate
concrete class: JapanesePlate, WesternPlate

abstract plateDecorator extends plate
concrete decorators: MeatPlateDecorator, TomatoPlateDecorator,

有时,JapanesePlate可以用 MeatPlateDecorator 装饰或TomatoPlateDecorator或两者兼而有之。

我只是想知道是否有什么办法可以知道这一点?

最佳答案

您无法找到形成任意装饰层次结构的所有类,因为装饰器有一个装饰类的实例,并且不形成is-a> 关系。

来自 JDK 的具体示例:BufferedInputStream是输入流的装饰器。它是包含 FilterInputStreamInputStream 的类层次结构的一部分,但它没有告诉您任何有关它正在装饰的类的信息。

如果您碰巧知道 BufferedInputStream 是如何实现的,您可以使用反射来检查它正在装饰的流,但这并不能帮助您检查,例如 BufferedOutputStream >.

关于java - 如何列出 Java 中对象扩展的所有类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14942939/

相关文章:

java - 想要对 Java String 进行左右修剪

python - 为什么 Python 中的 @foo.setter 对我不起作用?

用于聚合 PyQt 信号的 Python 装饰器

Python:返回运行给定函数n次的函数

java - 使用 SLF4J 将 java.util.logging.Logger (JUL) 发送/重定向/路由到 Logback?

java - 如何为 Java 库中没有应用方法的对象编写 JSON 格式?

java - 黑莓Java : Preprocessor directives don't remove dependencies

python - 获取装饰函数的名称?

python - 在调用 Django 模型保存/删除后调用函数

java - Jboss 连接池配置