如何区分同一类的两个方法参数?

时间:2014-09-25 09:03:20

标签: java

我有很多种类的方法

doStuff(DataHolder in, DataHolder out)

类DataHolder是最终的。我想确保人们在使用这种方法时不会进出,这是确保这种方法最简单的方法吗?我宁愿不使用get getters和setter。

4 个答案:

答案 0 :(得分:3)

您可以使用两个包装类:

class WrapperDataHolderIn{
     public WrapperDataHolderIn(DataHolder data)
}

class WrapperDataHolderOut{
     public WrapperDataHolderOut(DataHolder data)
}

注意:赞成合成而不是继承(复合重用原则)

答案 1 :(得分:0)

你有两个简单的选择:

DataHolder doStuff (DataHolder in);

class InDataHolder extends DataHolder {
    // Empty!
}
class OutDataHolder extends DataHolder {
    // Empty!
}
doStuff(InDataHolder in, OutDataHolder out);

答案 2 :(得分:0)

正如@Pham Trung所说,

  

您可以使用两个包装类:

class WrapperDataHolderIn{
 public WrapperDataHolderIn(DataHolder data)
} And

class WrapperDataHolderOunt{
 public WrapperDataHolderOut(DataHolder data)
}

但我也想补充一点:

public doStuff(WrapperDataHolderIn in, WrapperDataHolderOut out) {
     doStuff(in.getDataHolder(), out.getDataHolder());
}

private doStuff(DataHolder in, DataHolder out) {
    // do stuff
}

这样,doStuff方法的所有内容都是透明的。

这是Adapter pattern的典型实现。

答案 3 :(得分:0)

所以有一个与Pham Trung相似的想法是

像那样调用doStuff

in(in).out.(out).doStuff()

in()out()返回this