Java中更高效的3 if语句

时间:2012-11-04 03:29:28

标签: java if-statement

任何人都可以建议一种更有效的方法来编写我写的以下方法。我刚接触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);
    }
}

1 个答案:

答案 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{

}