我目前正在以下列方式进行方法调用:
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”?
答案 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);