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

Java 如何区分同一类的两个方法参数?,java,Java,我有很多类似的方法 doStuff(DataHolder in, DataHolder out) 类数据持有者是最终的。我想确保人们在使用该方法时不会进行交换,这是确保这一点的最简单方法?我宁愿不使用getter和setter。您有两个简单的选择: DataHolder doStuff (DataHolder in); 或 您有两个简单的选择: DataHolder doStuff (DataHolder in); 或 您有两个简单的选择: DataHolder doStuff (Data

我有很多类似的方法

doStuff(DataHolder in, DataHolder out)

类数据持有者是最终的。我想确保人们在使用该方法时不会进行交换,这是确保这一点的最简单方法?我宁愿不使用getter和setter。

您有两个简单的选择:

DataHolder doStuff (DataHolder in);


您有两个简单的选择:

DataHolder doStuff (DataHolder in);


您有两个简单的选择:

DataHolder doStuff (DataHolder in);


您有两个简单的选择:

DataHolder doStuff (DataHolder in);


您可以使用两个包装器类:

class WrapperDataHolderIn{
     public WrapperDataHolderIn(DataHolder data)
}
class WrapperDataHolderIn{
 public WrapperDataHolderIn(DataHolder data)
} And

class WrapperDataHolderOunt{
 public WrapperDataHolderOut(DataHolder data)
}


注意:支持组合而不是继承(复合重用原则)

您可以使用两个包装器类:

class WrapperDataHolderIn{
     public WrapperDataHolderIn(DataHolder data)
}
class WrapperDataHolderIn{
 public WrapperDataHolderIn(DataHolder data)
} And

class WrapperDataHolderOunt{
 public WrapperDataHolderOut(DataHolder data)
}


注意:支持组合而不是继承(复合重用原则)

您可以使用两个包装器类:

class WrapperDataHolderIn{
     public WrapperDataHolderIn(DataHolder data)
}
class WrapperDataHolderIn{
 public WrapperDataHolderIn(DataHolder data)
} And

class WrapperDataHolderOunt{
 public WrapperDataHolderOut(DataHolder data)
}


注意:支持组合而不是继承(复合重用原则)

您可以使用两个包装器类:

class WrapperDataHolderIn{
     public WrapperDataHolderIn(DataHolder data)
}
class WrapperDataHolderIn{
 public WrapperDataHolderIn(DataHolder data)
} And

class WrapperDataHolderOunt{
 public WrapperDataHolderOut(DataHolder data)
}


:偏好组合而非继承(复合重用原则)

正如@Pham Trung所建议的


您可以使用两个包装器类:

class WrapperDataHolderIn{
     public WrapperDataHolderIn(DataHolder data)
}
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方法都是透明的


这是@Pham Trung建议的。

的典型实现


您可以使用两个包装器类:

class WrapperDataHolderIn{
     public WrapperDataHolderIn(DataHolder data)
}
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方法都是透明的


这是@Pham Trung建议的。

的典型实现


您可以使用两个包装器类:

class WrapperDataHolderIn{
     public WrapperDataHolderIn(DataHolder data)
}
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方法都是透明的


这是@Pham Trung建议的。

的典型实现


您可以使用两个包装器类:

class WrapperDataHolderIn{
     public WrapperDataHolderIn(DataHolder data)
}
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方法都是透明的


这是一个典型的。

的实现,所以一个类似于Pham Trung的想法是

那样叫多斯塔夫

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

随着
in()
out()
返回

因此,一个类似于Pham Trung的想法是

那样叫多斯塔夫

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

随着
in()
out()
返回

因此,一个类似于Pham Trung的想法是

那样叫多斯塔夫

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

随着
in()
out()
返回

因此,一个类似于Pham Trung的想法是

那样叫多斯塔夫

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

使用
in()
out()
返回
这个

生成更具体的类?可能是
DataHolderIn
DataHolderOut
?@evannowles:“类DataHolder是最终的”,可能是从库中接收的,而不是在OP的控制下。阅读方法的文档。所以包含文档:)重构你的方法,使它看起来像是
DataHolder doStuff(DataHolder in)
DataHolder doStuff(DataHolder in)
不是一回事,因为方法
doStuff
访问/修改
out
中已经存在的一些信息。创建更具体的类?可能是
DataHolderIn
DataHolderOut
?@evannowles:“类DataHolder是最终的”,可能是从库中接收的,而不是在OP的控制下。阅读方法的文档。所以包含文档:)重构你的方法,使它看起来像是
DataHolder doStuff(DataHolder in)
DataHolder doStuff(DataHolder in)
不是一回事,因为方法
doStuff
访问/修改
out
中已经存在的一些信息。创建更具体的类?可能是
DataHolderIn
DataHolderOut
?@evannowles:“类DataHolder是最终的”,可能是从库中接收的,而不是在OP的控制下。阅读方法的文档。所以包含文档:)重构你的方法,使它看起来像是
DataHolder doStuff(DataHolder in)
DataHolder doStuff(DataHolder in)
不是一回事,因为方法
doStuff
访问/修改
out
中已经存在的一些信息。创建更具体的类?可能是
DataHolderIn
DataHolderOut
?@evannowles:“类DataHolder是最终的”,可能是从库中接收的,而不是在OP的控制下。阅读方法的文档。所以包含文档:)重构方法,使其看起来像
DataHolder-doStuff(DataHolder-in)
DataHolder-doStuff(DataHolder-in)
不是一回事,因为方法
doStuff
访问/修改了
out
中已经存在的一些信息。