相当于VBA与Java中的语句

时间:2012-10-05 20:40:12

标签: java vba with-statement

我目前正在以下列方式进行方法调用:

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”?

3 个答案:

答案 0 :(得分:3)

总而言之,尽管你可能想考虑改变

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

TrackInstruments trackInstruments = new TrackInstruments(instrumentsInfo);

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

如果您需要大量参数,或者可以使用builder模式。

或者确实问问自己为什么你在InstrumentsInfo之外构建TrackInstruments,当后者似乎如此依赖它时。 (没有完全理解你的对象)

答案 1 :(得分:1)

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

的构造函数
TrackInstruments trackInstruments = new TrackInstruments(instrumentsInfo);

答案 2 :(得分: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);