我試圖從遷移春天有個項目,並開始通過承接來樣GitHub庫用匕首2打一個無效的方法。我怎麼能「提供」中的匕首
在春天,我可以在類級別使用註釋來揭露所有的類的方法,包括void
方法。我想在匕首2中這樣做,即我想'提供'void
方法。
在下面的代碼示例中,我應該將printRandomUUID
方法移動到Printer
接口。不過,我正在做這個小練習,目的是遷移經典的彈簧@Component
或@Service
。
什麼是正確的方法?是否有可能在組件或模塊級別提供無效方法?
public class Main {
interface Printer {
void printMsg(String msg);
}
static class ConsolePrinter implements Printer {
@Override
public void printMsg(String msg) {
System.out.println(msg);
}
}
@Singleton
@Component(modules = ConsoleModule.class)
interface HelloWorldApp {
Printer getPrinter();
//this doesn't compile -> java.lang.IllegalArgumentException: not a valid component method:
void printRandomUUID();
}
@Module
static class ConsoleModule {
@Provides
Printer providePrinter() {
return new ConsolePrinter();
}
//this doesn't compile -> @Provides methods must return a value (not void)
@Provides
void printRandomUUID() {
System.out.println(UUID.randomUUID().toString());
}
}
public static void main(String[] args) {
HelloWorldApp app = DaggerMain_HelloWorldApp.create();
app.getPrinter().printMsg("Hello");
System.out.println("-");
//app.printRandomUUID();//here i want a void method to be consumed, from the component.
}
}
這似乎是一個超級奇怪的事情想要的。你能提供一個'Runnable'回調嗎? –