package demo;
import dagger.Component;
import dagger.Provides;
import dagger.Module;
import java.util.concurrent.Callable;
public class HelloWorld {
public static void main(String[] args) throws Exception {
System.out.println(DaggerHelloWorld_OurComponent.builder().build().getCallable().call());
}
@Component(modules = OurModule.class)
interface OurComponent {
Callable getCallable();
}
}
@Module
class OurModule {
@Provides
Callable getHelloWorld() {
return () -> "Hello World";
}
}
---
I've used Callable to keep the class count down. OurModule and OurComponent is to allow
the import statements.
Have I missed anything, or is this as tight as it can get?
/Thorbjørn
Duly noted. Perhaps you would like to adapt it so we have a complete example as you would like it to be?
package com.example.dagger;
import dagger.Component;import dagger.Module;import dagger.Provides;
public class Example {
interface Printer { void printMsg(String msg); }
static class ConsolePrinter implements Printer { @Override public void printMsg(String msg) { System.out.println(msg); } }
@Component(modules = ConsoleModule.class) interface HelloWorldApp { Printer getPrinter(); }
@Module static class ConsoleModule { @Provides Printer providePrinter() { return new ConsolePrinter(); } }
public static void main(String[] args) { HelloWorldApp app = DaggerExample_HelloWorldApp.create(); app.getPrinter().printMsg("Hello World!"); }}