我有以下界面:
public interface FooFactory {
Foo create();
default Foo createWithData(Data data){
Foo foo = create();
foo.addData(data);
return foo;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在安装它如下:
install(new FactoryModuleBuilder().build(FooFactory.class));
Run Code Online (Sandbox Code Playgroud)
但是,问题是Guice用自己的工厂方法覆盖了我的默认方法.我得到的Foo与Foo相同create()(没有设置数据).永远不会调用默认方法.
现在,这只是一种方便的方法,但是我可以告诉Guice不要覆盖我的功能吗?
该guice-assistedinject模块有一个错误,用于在第L252行跳过java-8默认方法.我发现没有测试这个功能的测试.
在java编译器中,默认方法既不是bridge方法也不是synthetic方法.但是,它的评论说会跳过默认方法.代码应为:
if (isDefault(method)){
...
}
Run Code Online (Sandbox Code Playgroud)
你需要自己编写Provider.
| 归档时间: |
|
| 查看次数: |
252 次 |
| 最近记录: |