2015-09-07 1 views

Répondre

2

Ceci peut être plus d'une question d'opinion. Néanmoins, je pense que private package est le modificateur que vous devriez utiliser. Dagger n'a besoin que des méthodes @Provides pour être privé, donc il est inutile de les rendre publics. J'ai tendance à penser que plus vous pouvez limiter la portée d'une méthode, mieux c'est.

+0

Oui, je pense aussi que le paquet private est la meilleure option. Mais je suis confronté au problème suivant: je veux passer un objet (ou l'appeler dépendance) dans un constructeur de la classe '@ Mudole', pour éviter de le passer dans chaque méthode' @ Provides', et cette dépendance est fournie par un autre Dans la classe '@ Module', ces deux classes' @ Module' sont dans le paquet deferent, puis je fais face aux choix difficiles: 1. Rendre publique la méthode '@ Provides' de la classe' @ Module'; 2. Recréer la dépendance lors de la construction de l'objet '@ Component', et le passer dans le premier constructeur de la classe' @ Module'. Lequel est le meilleur? – Piasy

+0

@Piasy: La façon dont je l'ai fait dans le passé est de faire en sorte que chaque méthode '@ Provides' prenne l'objet dont elle a besoin comme argument. Alors Dagger peut faire toute la magie pour vous. Si vous ne voulez vraiment pas faire cela, essayez d'utiliser '@ Inject' sur le constructeur du module. Je ne suis pas sûr si cela fonctionne, mais il semble que l'option la plus propre. – Rohan

+0

Merci pour votre réponse! – Piasy