gpt4 book ai didi

java - "No owner type for enclosed interface"guice 错误是什么意思?

转载 作者:行者123 更新时间:2023-12-04 05:57:33 26 4
gpt4 key购买 nike

我正在尝试生成 ParameterizedType使用 Guice 的 Types图书馆。 Butler是一个内部类或内部接口(interface)。当我使用 following 之类的代码时,我收到错误“封闭接口(interface)没有所有者类型”。为什么?

private Butler<Person> findButler(Person person, Injector injector){
Class<? extends Person> personClass = person.getClass();

ParameterizedType parameterizedButler =
Types.newParameterizedType(Butler.class, personClass);

Key<?> key = Key.get(parameterizedButler);
Butler<Person> butler = (Butler<Person>) injector.getInstance(key);
return butler
}

最佳答案

Per Sam Berlin 的 answer ,“封闭接口(interface)没有所有者类型”错误意味着如果 [在这种情况下] Butler 是一个内部类,您将需要使用 three-argumentnewParameterizedTypeWithOwner method并将外部类作为所有者 [first] 参数传递。

所以正确的代码看起来像这样:

private Butler<Person> findButler(Person person, Injector injector){
Class<? extends Person> personClass = person.getClass();

ParameterizedType parameterizedButler =
Types.newParameterizedTypeWithOwner(ButlersOuter.class, Butler.class, personClass);

Key<?> key = Key.get(parameterizedButler);
Butler<Person> butler = (Butler<Person>) injector.getInstance(key);
return butler
}

关于java - "No owner type for enclosed interface"guice 错误是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9323427/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com