“封闭接口无所有者类型”是什么意思? guice错误是什么意思?
我正在尝试使用 Guice 的 Types
库生成一个 ParameterizedType
。 Butler
是一个内部类或内部接口。当我使用以下之类的代码时,我得到错误“封闭接口没有所有者类型”。为什么?
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
}
I'm trying to generate a ParameterizedType
using Guice's Types
library. Butler
is an inner class or inner interface. When I use the code like the following, I get the error "No owner type for enclosed interface". Why?
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
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据 Sam Berlin 的回答,“没有所有者类型封闭接口”错误意味着如果[在这种情况下] Butler 是内部类,则您需要使用 三参数
newParameterizedTypeWithOwner 方法 并将外部类作为所有者 [first] 参数传递。
所以正确的代码应该是这样的:
Per Sam Berlin's answer, the "No owner type for enclosed interface" error means that if [in this case] Butler is an inner class, you'll need to use the three-argument
newParameterizedTypeWithOwner method and pass the outer class as the owner [first] argument.
So the correct code would look something like this: