2015-06-15 5 views
2

У меня есть точка впрыска:Dagger 2 Названный Set Injection

public class Receiver { 
    private final Set<Sender> senders; 

    @Inject 
    public Receiver(@Named("Test") Set<Sender> senders){ 
    this.senders = senders; 
    } 
} 

Кроме того у меня есть этот модуль, обеспечивающий зависимость:

@Module 
public class MyModule { 
    @Provides(type = Provides.Type.SET) 
    @Singleton 
    @Named("Test") 
    public Sender provideSender(){ 
    return new SpecificSender(); 
    } 
} 

Но Кинжал 2 APT не может создать соответствующие классы. Я получаю это исключение от APT:

Caused by: java.lang.UnsupportedOperationException 
at dagger.internal.codegen.KeyVariableNamer.apply(KeyVariableNamer.java:44) 

У кого-то есть такая же проблема? Есть ли хороший способ обхода?

Если я опустил аннотацию Named, это сработает. Я использую Dagger 2.0

Спасибо

+0

Если я использую аннотацию классификатора, механизм работает. Но, тем не менее, я думаю, что он также должен работать с @Named annotation – Soccertrash

+1

Основываясь на первом взгляде на код компилятора Dagger2, это, кажется, крайний случай и в настоящее время является ошибкой, у него даже есть комментарий «TODO:' рядом с ним , – EpicPandaForce

+0

Для этого вы можете [открыть проблему] (https://github.com/google/dagger/issues). – nhaarman

ответ

0

Это было исправлено внутренне, но еще не синхронизируются с GitHub.

+0

Это только что произошло со мной на Dagger 2.0.2. Любые новости о том, когда это исправление будет выпущено? – nicopico

+0

@nicopico Это случилось со мной. Я заполнил вопрос, вот ссылка, если вы хотите следить за ней: https://github.com/google/dagger/issues/343 – maciekjanusz

+0

Dagger 2.1 выпущен BTW; вы проверили, исправлено ли в этой версии? –

Смежные вопросы