Genericsで四則演算したい、みたいな夢を見てみた
public class OpTest { enum Operator { PLUS, MINUS, MULTI, DIVIDE; public <T> T execute( T num1, T num2 ) { T value; switch(this) { case PLUS: value = num1 + num2; break; case MINUS: value = num1 - num2; break; case MULTI: value = num1 * num2; break; case DIVIDE: value = num1 / num2; break; default: value = null; } return value; } } public static void main(String[] args) { Integer inum = Operator.PLUS.execute( 1, 2 ); System.out.println( inum ); Double dnum = Operator.DIVIDE.execute(5.0, 3.0); System.out.println( dnum ); } }
「演算子?は引数の型T, Tで未定義です」みたいなエラーが出ます。mainでは型がちゃんと渡ってるのになー。やっぱダメなのかなぁ。