无法为扩展 Java Class 的 class 注入列表 <String>

Cannot inject List<String> for class extending Java Class

尝试将字符串列表注入 class 构造函数时出现以下错误。我将 AbstractDelegator java class 扩展为 CancelDelegator。 AbstractDelegator 是从依赖项 jar 中引用的,所以我无法更改它。

No implementation for java.util.List<java.lang.String> annotated with @com.google.inject.name.Named(value=CANCEL_TASKS) was bound.
while locating java.util.List<java.lang.String> annotated with @com.google.inject.name.Named(value=CANCEL_TASKS)
for parameter 1 at com.cancel.core.delegator.CancelDelegator.<init>(CancelDelegator.kt:18). 
at com.cancel.core.config.CancelModule.configure(CancelModule.kt:45)

以下是 classes:

AbstractDelegator.java(来自依赖 jar)

public abstract class AbstractDelegator<T extends Request, R extends Response> implements Delegator<T, R> {
    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
    protected Processor<T, R> processor;
    protected List<String> taskSequence;

    protected AbstractDelegator(Processor<T, R> processor, List<String> taskSequence) {
        this.processor = processor;
        this.taskSequence = taskSequence;
    }
 }

CancelDelegator.kt

@Singleton
class CancelDelegator @Inject constructor(
  @Named(CancelConstant.CANCEL_PROCESSOR) processor: Processor<Request?, Response?>?,
  @Named(CancelConstant.CANCEL_TASKS) taskSequence: List<String?>?
) : AbstractDelegator<Request?, Response?>(processor, taskSequence)

GuiceModule.kt

bind<Delegator<Request?, Response?>?>(object : TypeLiteral<Delegator<Request?, Response?>?>() {})
      .annotatedWith(Names.named(CancelConstant.CANCEL_DELEGATOR))
      .to(CancelDelegator::class.java)

bind<List<String?>?>(object : TypeLiteral<List<String?>?>() {})
  .annotatedWith(Names.named(CancelConstant.CANCEL_TASKS))
  .toInstance(Arrays.asList(CancelConstant.CANCEL_PENALTY_TASK))

它只是 Guice 无法注入的列表。其他注射工作正常。我试过更改 List?到 List 和 List 但似乎没有任何效果。

this GitHub 问题中所述,

var setA: Set<Runnable>
var setB: MutableSet<Runnable>

等同于 Java 中的以下内容:

Set<? extends Runnable> setA;
Set<Runnable> setB;

您可以使用 @JvmSuppressWildcards 注释修复它。类似于以下内容:

bind(object : TypeLiteral<List<@JvmSuppressWildcards String>>() {})
    .annotatedWith(Names.named(CancelConstant.CANCEL_DELEGATOR))
    .toInstance(listOf("hello", "goodbye"))