Jer*_*vel 0 java parameters methods reference
我有一个方法
public void create(String x, String y, String z, Calendar a, Calendar b, Calendar c, List<String> d){
object.create(x, y, z, a, b, c, d);
}
Run Code Online (Sandbox Code Playgroud)
通过几个管理类传递.有没有办法避免我必须在object.create调用中显式键入参数,而是允许我简单地引用方法自己的参数?
我问这个的原因是因为我有几个这样的方法,看起来很混乱.
请注意参数是不同类型的,它们仍应按此定义,而不是Object... args.
这里通常的答案是创建一个具有这些东西属性的新类,并传递该类的实例(有点像消息包络)而不是一堆离散的参数.
例如:
public void create(MyNiftyThing thing){
object.create(thing);
}
Run Code Online (Sandbox Code Playgroud)
...... MyNiftyThing班级是:
class MyNiftyThing {
private String x;
private String y;
private String z;
private Calendar a;
private Calendar b;
private Calendar c;
private List<String> d;
public MyNiftyThing(String x, String y, String z, Calendar a, Calendar b, Calendar c, List<String> d) {
// ...init data members here...
}
// ...accessors for the data members here...
}
Run Code Online (Sandbox Code Playgroud)
你可以通过只有getter而不是setter来保持它不变.有时候,如果它纯粹是一个方便的数据结构,你可以使用public作为实例成员,但是任何体面的IDE都可以为你自动生成访问器(如果你使用了公共,那么你就会final因为不变性而被困住).
当然,你不具备接受所有那些在构造函数(或者你可以有多个构造函数),如果有合理的默认值,你可以提供.
它可能不适用于这种特定情况,但是例如MyNiftyThing可以通过让构造函数接受最小的args(可能没有)然后是一系列buildNNN设置其相关数据成员并返回this链接的方法来构建它自己的构建器.这可以帮助避免在构造函数签名迷路("是不是x,y,z或x,z,y...?").:-)这样做的缺点是你基本上失去了不变性.
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |