列挙タイプ(enum)実装インタフェース

1505 ワード

Ref-Gonçalo Marques
Introduction
JAvaのインタフェースは、列挙タイプによって実現されることもある.
The Enum
ここでは簡単な数学アルゴリズムを例に挙げます.まず、演算のインタフェースを定義します.
Operator.java
public interface Operator {
  int calculate(int firstOperand, int secondOperand);
}

次に、上記のインタフェースを実装する列挙タイプを定義します.
EOperator.java
public enum EOperator implements Operator {
  SUM {
    @Override
    public int calculate(int firstOperand, int secondOperand) {
      return firstOperand + secondOperand;
    }
  },
  SUBTRACT {
    @Override
    public int calculate(int firstOperand, int secondOperand) {
      return firstOperand - secondOperand;
    }
  };
}

次にoperation classを定義します
public class Operation {
  private int firstOperand;
  private int secondOperand;
  private EOperator operator;
  public Operation(int firstOperand, int secondOperand, 
                    EOperator operator) {
    this.firstOperand = firstOperand;
    this.secondOperand = secondOperand;
    this.operator = operator;
  }
  public int calculate(){
    return operator.calculate(firstOperand, secondOperand);
  }
}

最終テスト:
public class Main {
  public static void main (String [] args){
    Operation sum = new Operation(10, 5, EOperator.SUM);
    Operation subtraction = new Operation(10, 5, EOperator.SUBTRACT);
    System.out.println("Sum: " + sum.calculate());
    System.out.println("Subtraction: " + subtraction.calculate());
  }
}