Android 接口不同实例的依赖项注入

Android 接口不同实例的依赖项注入,android,dagger-hilt,Android,Dagger Hilt,我有一个叫做Animal的界面。它有两个实现;狗和猫。因为我想指定在将动物注射到不同对象中时需要哪个实现,所以我通过执行以下操作解决了这个问题: @Module @InstallIn(ApplicationComponent.class) public abstract class ApplicationModule { @Named("Dog") @Binds public abstract Animal provideDog(Dog dog);

我有一个叫做Animal的界面。它有两个实现;狗和猫。因为我想指定在将动物注射到不同对象中时需要哪个实现,所以我通过执行以下操作解决了这个问题:

@Module
@InstallIn(ApplicationComponent.class)
public abstract class ApplicationModule 
{

    @Named("Dog")
    @Binds
    public abstract Animal provideDog(Dog dog);

    @Named("Cat")
    @Binds
    public abstract Animal provideCat(Cat cat);
 
}
Dog和Cat构造函数已用@Inject注释:

public class Dog implements Animal
{

    @Inject
    public Dog()
    {
                  
    }
}

public class Cat implements Animal
{

    @Inject
    public Cat()
    {
                  
    }
}
如果另一个名为C的类需要Dog对象:

public class C
{
    
        @Inject
        public C(@Named("Dog")Animal dog)
        {
                      
        }
}
如果另一个名为D的类需要Cat对象:

public class D
{
    
        @Inject
        public D(@Named("Cat")Animal cat)
        {
                      
        }
}
当我运行应用程序时,我意识到Hilt总是注入相同的dog实例,这意味着该dog实例在C类的不同实例之间共享。如果我想为C类的每个实例创建一个新的dog实例,我需要做什么

为了简洁起见,我没有为字段添加代码