Ada*_*dam 5 c java pass-by-reference
我从C学习后学习如何使用Java进行编码.在CI中,总是将所有内容分成单独的函数,以使代码更易于遵循和编辑.我试图在java中这样做,但现在我意识到你不能使用指针,我有点困惑,最好的方法是什么.
所以例如我想要一个为我创建四个警报的方法.所以我传递了一个警报构建器,然后可以创建警报.我可以在一个数组中返回它们,但是在我的代码中我已经有单独命名的警报,我想保持这种方式,所以我不需要将它们称为alert [1],alert [2]. ......等
所以这意味着我必须重命名它们,这将添加额外的代码,这可能比实际方法中的代码更长!
我是否正确地思考这个问题?有什么我能做的吗?
-编辑-
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(this.getString(R.string.ache_Q_text))
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {dialog.cancel();}
});
final AlertDialog ache_Q_alert = builder.create();
builder.setMessage(this.getString(R.string.food_Q_text));
final AlertDialog food_Q_alert = builder.create();
builder.setMessage(this.getString(R.string.event_Q_text));
final AlertDialog event_Q_alert = builder.create();
builder.setMessage(this.getString(R.string.ache_Q_text));
final AlertDialog ache_type_Q_alert = builder.create();
Run Code Online (Sandbox Code Playgroud)
而是用它替换它
createAlerts();
Run Code Online (Sandbox Code Playgroud)
并将该代码放在某处.
听起来你想要一个方法为你创建四个对象并返回它们.你有几个选择:
Alert foo = createOneAlert(x,y,z);
Alert bar = createOneAlert(a,b,c);
// etc.
Run Code Online (Sandbox Code Playgroud)
public class Alerts {
private final Alert foo;
private final Alert bar;
private final Alert baz;
private final Alert quux;
public Alerts(Alert foo, Alert bar, Alert baz, Alert quux) {
this.foo = foo;
this.bar = bar;
this.baz = baz;
this.quux = quux;
}
public Alert getFoo() { return foo; }
// etc.
}
public Alerts makeAlerts(AlertBuilder builder) {
return new Alerts(
builder.buildAlert(a,b,c),
builder.buildAlert(d,e,f),
builder.buildAlert(g,h,i),
builder.buildAlert(x,y,z));
}
Run Code Online (Sandbox Code Playgroud)
它可能更冗长,但a)Java和b)详细程度可能是一件好事