Предоставление двух коллекций типов, одна из которых является подмножеством другой.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Предоставление двух коллекций типов, одна из которых является подмножеством другой.

Сообщение Anonymous »

Я добавляю Dagger в наше приложение. Я хочу иметь доступ к двум коллекциям одного типа, одна из которых является подмножеством другой.
Как мне это сделать?
< em>(Кроме упаковки коллекций в отдельные типы — в моем примере ниже это будут AllPeople и AllExceptJane)
Вот неудачный 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 {
@Named("jane")
Set getAllPeople();
@Named("exceptJane")
Set getAllPeopleExceptJane();
}

Код: Выделить всё

package myown;

import dagger.Module;
import dagger.Provides;
import dagger.multibindings.IntoSet;

import javax.inject.Named;
import javax.inject.Singleton;
import java.util.HashSet;
import java.util.Set;

@Module
public class PersonModule {
@Singleton
@Named("jane")
@Provides
public Person jane() {
return new Person("Jane");
}

@Singleton
@Provides
@IntoSet
public Person joshua() {
return new Person("Joshua");
}

@Singleton
@Provides
@Named("exceptJane")
public Set allExceptJane(/*does Dagger have trouble with this part?*/ Set allExceptJane) {
return allExceptJane;
}

@Singleton
@Provides
@Named("all")
public Set all(@Named("exceptJane") Set allExceptJane,
@Named("jane") Person jane) {
Set all = new HashSet(allExceptJane);
all.add(jane);
return all;
}
}

Код: Выделить всё

package myown;

public class Person {
private final String name;

public Person(String name) {
this.name = name;
}
}
Когда вы попытаетесь его построить, вы получите

Код: Выделить всё

java: [Dagger/MissingBinding] @javax.inject.Named("jane") java.util.Set cannot be provided without an @Provides-annotated method.
@javax.inject.Named("jane") java.util.Set is provided at
myown.PersonComponent.getAllPeople()
Кинжал 2.16


Подробнее здесь: https://stackoverflow.com/questions/785 ... of-another
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»