(从一个大墙o'文本编辑下来以更好地总结)问题是:
我有一个 AbstractMyClass 的集合。这个集合中有许多具体的子类。每个子类还将包含一个特定类型对象的字段。AbstractMyClass 可能有十几个不同的孩子,每个孩子都有自己的对象字段。这些对象中的每一个都可能在 Object 之外没有共享的父类。
例如,MyClassA 可能有一个 String,MyClassB 可能有一个 Integer,MyClassC 可能有一个 MyCustomClass,等等。不幸的是,不同的对象是这样做的必要条件。
问题是,需要评估这个集合,并且在给定正确的条件集的情况下,必须提取、检查、操作、存储、搁置等 AbstractMyClass 中的对象以供以后操作。基于条件以及其中的 MyClass/对象类型,存在多种潜在操作,因此处理 MyClass 中的数据可能不可行,因为其他更集中的类(即管理线程池的类)可能需要对付他们。这让我需要处理一些非常不同的对象类型。这当然可以做到,但我想不出任何合理的干净或动态的方式来处理它。当然,您可以尝试以下方法:
- 使用泛型,它可以消除一些子类,但是在该类之外,您不知道 Object T 是什么,也不知道如何处理它而无需更多麻烦。
- 对所有内容进行类型检查,这是一个相当冗长和丑陋的条件,并且在引入新的对象类型时必须保持。
- AbstractMyClass 中的委托,但这意味着要构建更多类来处理每个实例,并且委托可能无法处理所有必要的功能。
- 一个包装对象,每个对象类型都有一个字段。是的,让我们对所有内容进行空检查。
你可以看到困境。是否有任何“好”的方法来处理这类事情,或者它只是 Java 无法直接处理的问题之一,因为它在运行时可能没有足够的信息,每个人都只是以不同的方式解决它?