首页 > 解决方案 > 给定泛型类型的实例,如何找到实现泛型接口的 Java 类?

问题描述

我正在开发一个包含一系列“<code>Rule”类(、、、CustomerRuleVolumeRuleTimeRule的项目。这些类是自动生成的,不应从它们生成的形式中修改。

为了处理这些规则,我有一系列实现以下接口的“<code>RuleProcessor”类(CustomerRuleProcessorVolumeRuleProcessor等):

public interface RuleProcessor<T extends Rule> {
   T apply(T rule, EvaluationInput input);
}

实现看起来像这样:

public class CustomerRuleProcessor implements RuleProcessor<CustomerRule> {...}

最后,规则类本身被组合在一起,并以 JSON 格式存储在数据库中。因此,可以将多个不同类型的规则存储在一起作为一组进行处理。检索时,我将有一个List<? extends Rule>将被流式传输和处理的。

我的问题是这样的:

我知道我可以只使用命名约定并使用class.getName() + "Processor". 但我想知道是否有更好、更优雅的解决方案。

标签: javagenericsreflectionserviceloader

解决方案


推荐阅读