gpt4 book ai didi

java - 使用 RoboGuice 2 使用带有参数的构造函数注入(inject)对象

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:54 26 4
gpt4 key购买 nike

我第一次尝试 Android 版 RoboGuice2(和 Guice 相关),现在卡住了。我一直无法找到如何执行此操作的示例,并且希望有人向我展示正确的方法并进行解释。我想在构造函数中 @Inject 一个将字符串作为参数的对象。示例如下:

public class MyActivity extends RoboFragmentActivity {

@Inject MyObject obj;

public void onCreate(Bundle savedInstanceState) {
super.onCreate();
obj.print();
}
}



public class MyObject {

private String name;

@Inject
public MyObject(String name) {
this.name = name;
}


public void print() {
Log.d("debug", this.name);
}
}

我将非常感谢对此的示例和解释。

最佳答案

我不确定是否可以在将参数传递给其构造函数时使用 RoboGuice 注入(inject)对象 (当然不鼓励这样做) 。您可能想要考虑只更改您对该对象调用的任何方法,该对象写入文件系统以接受该 String 参数。如果您不喜欢该选项,则可以在调用写入函数之前使用一个公共(public)方法来设置该参数。

例如:

@Inject
private MyClass myClass;

public void onCreate(Bundle savedInstanceState) {

super.onCreate();
myClass.setFileName("somefile.txt");
myClass.writeToFile();
}

或者

@Inject
private MyClass myClass;

public void onCreate(Bundle savedInstanceState) {

super.onCreate();
myClass.writeToFile("somefile.txt");
}

编辑:

所以在做了一些研究之后,我收回了我关于不鼓励这样做的声明。从我看过的示例来看,您的代码看起来大部分是正确的。 This Link提供了我能找到的最完整的例子。如果要将 String 注入(inject)构造函数,似乎有两种选择。你可以在你的应用程序配置绑定(bind)中设置它(这实际上创建了一个你可能不想要的单例)。第二种选择是创建一个 Provide(类似于 Factory)并使用该提供者。上面的文章概述了这两个选项。

关于java - 使用 RoboGuice 2 使用带有参数的构造函数注入(inject)对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13850567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com