任何人都可以建议一种更有效的方法来编写我写的以下方法。我刚接触java编程,所以我觉得我可能不知道什么。主要是,我想知道一个更好的方法来编写我希望在每个参数“synapse”上运行的三个if语句。谢谢!
public void addSynapse(Synapse synapse)
{
Synapse newSynapse = new Synapse(synapse.getInputCell());
this.synapses.add(newSynapse);
if (synapse.getConnectedState())
{
this.connectedSynapses.add(newSynapse);
}
if (synapse.getActiveState())
{
this.activeSynapses.add(newSynapse);
}
if (synapse.getPreviousActiveState())
{
this.previousActiveSynapses.add(newSynapse);
}
}
答案 0 :(得分:0)
您可以创建一个枚举SynapseState,它是Synapse类状态的象征。将状态信息嵌入枚举的优点是可以在switch语句中使用它。任何与Synapse状态相关的不变信息都可以用抽象方法包含在枚举中。从下面的示例中查看我从问题示例代码中获取的任何信息
enum SynapseState {
CONNECTED(0) {
@Override
List<StateParameter> getStateParameters() {
return null;
}
}, ACTIVE(1) {
@Override
List<StateParameter> getStateParameters() {
return null;
}
}, PREVIOUS_ACTIVE(2) {
@Override
List<StateParameter> getStateParameters() {
return null;
}
};
private int value;
private SynapseState(int value) {
this.value = value;
}
abstract List<StateParameter> getStateParameters();
};
class SynapseMachine{
List<Synapse> connectedSynapses;
List<Synapse> activeSynapses;
List<Synapse> previousActiveSynapses;
List<Synapse> synapses;
public void addSynapse(Synapse synapse)
{
Synapse newSynapse = new Synapse(synapse.getInputCell());
this.synapses.add(newSynapse);
switch(synapse.getState()){
case CONNECTED:
this.connectedSynapses.add(newSynapse);
break;
case ACTIVE:
this.activeSynapses.add(newSynapse);
break;
case PREVIOUS_ACTIVE:
this.previousActiveSynapses.add(newSynapse);
break;
default:
throw new IllegalStateException();
}
}
}
class Synapse{
public Synapse(Object o){}
SynapseState getState(){
// TODO Auto-generated method stub
return null;
}
public Object getInputCell() {
// TODO Auto-generated method stub
return null;
}
}
class StateParameter{
}