0

我目前正在通过以下方式调用我的方法:

InstrumentsInfo instrumentsInfo = new InstrumentsInfo();
String shortInstruName = "EURUSD"

TrackInstruments trackInstruments = new TrackInstruments(instrumentsInfo.getInstrumentID(shortInstruName), instrumentsInfo.getInstrumentTickSize(shortInstruName), instrumentsInfo.getInstrumentName(shortInstruName));

在VBA中我会做这样的事情

With instrumentsInfo
 TrackInstruments(.getInstrumentID(shortInstruName), .getInstrumentTickSize(shortInstruName), .getInstrumentName(shortInstruName));

所以我的问题是,有没有办法避免在 Java 的方法调用中重复“instrumentsInfo”?

4

3 回答 3

3

总之不,虽然你可能想考虑改变

TrackInstruments trackInstruments = new TrackInstruments(instrumentsInfo.getInstrumentID(shortInstruName), instrumentsInfo.getInstrumentTickSize(shortInstruName), instrumentsInfo.getInstrumentName(shortInstruName));

TrackInstruments trackInstruments = new TrackInstruments(instrumentsInfo);

然后让构造函数获取它需要的参数。

或者,如果您需要很多参数,也许可以使用构建器模式。

或者确实问问自己,当后者似乎如此严重地依赖它时,为什么要在InstrumentsInfo 外部进行构建。TrackInstruments(在没有完全理解你的对象的情况下)

于 2012-10-05T20:48:24.253 回答
1

是的,您可以在 TrackInstruments 中创建一个接受对象类型 InstrumentsInfo 的构造函数

TrackInstruments trackInstruments = new TrackInstruments(instrumentsInfo);
于 2012-10-05T20:49:12.363 回答
0

不,Java 中没有With这样的语法。但是,为避免重复“instrumentsInfo”,您可以创建一个采用以下类型的构造函数:

TrackInstruments trackInstruments = new TrackInstruments(instrumentsInfo);

但是,这种设计会导致TrackInstruments了解InstrumentsInfo不会促进对象之间的松散耦合,因此您可以使用:

Integer instrumentID = instrumentsInfo.getInstrumentID(shortInstruName);
Integer instrumentTickSize = instrumentsInfo.getInstrumentTickSize(shortInstruName);
String instrumentName = instrumentsInfo.getInstrumentName(shortInstruName);

TrackInstruments trackInstruments = new TrackInstruments(instrumentID, instrumentTickSize, instrumentName);
于 2012-10-05T20:47:59.420 回答