Однако @IntoSet иногда что-то ломает. Вот MRE:
Код: Выделить всё
package myown;
import dagger.Component;
import javax.inject.Named;
import javax.inject.Singleton;
import java.util.Set;
@Component(modules = {PersonModule.class})
@Singleton
public interface PersonComponent {
Person getJane();
}
Код: Выделить всё
package myown;
import dagger.Module;
import dagger.Provides;
import dagger.multibindings.IntoSet;
import javax.inject.Singleton;
@Module(includes = PetModule.class)
public class PersonModule {
@IntoSet
@Singleton
@Provides
public Person jane(Pet pet) {
return new PetOwner("Jane", pet);
}
}
Код: Выделить всё
package myown;
import dagger.Module;
import dagger.Provides;
import javax.inject.Singleton;
@Module
public class PetModule {
@Provides
@Singleton
Pet getPet() {
return new Pet("Puffy");
}
}
Код: Выделить всё
package myown;
public class Person {
private final String name;
public Person(String name) {
this.name = name;
}
}
Код: Выделить всё
package myown;
public class PetOwner extends Person {
private final Pet pet;
public PetOwner(String name, Pet pet) {
super(name);
this.pet = pet;
}
}
Код: Выделить всё
package myown;
public class Pet {
private final String name;
public Pet(String name) {
this.name = name;
}
}
Код: Выделить всё
java: [Dagger/MissingBinding] myown.Person cannot be provided without an @Inject constructor or an @Provides-annotated method.
myown.Person is provided at
myown.PersonComponent.getJane()
Чтобы внести ясность, я хочу Джейн , чтобы иметь возможность вводить напрямую и как часть введенного Set всех Person (представьте, что есть jack, john< /code> и т. д., также помеченные @IntoSet)
Почему это происходит и есть ли решение/обходной путь?
Подробнее здесь: https://stackoverflow.com/questions/785 ... e-how-do-i
Мобильная версия