java小白上路,有个接口和策略模式的小疑问
我的任务是两个数的各种操作,可以用一个方法一起实现开始我写了一个接口,,,写了多个实现类,在最后的测试单元中,我首先写了一个可以统一实现的方法,在策略模式的时候很成功,学这个的最终目的是为了掌握&表达式,将写的代码不断简化,我写的方法要用接口对象,我将之改写成了内部接口,在调用的时候出现了一些问题,之前写的实现类用不了了,一应该是我的定义对象有问题,不知道怎么解决,希望有经验的大佬指点一下!
public class OperatorTest {
public static interface Operator {
public int opt(int i, int j);
}
//策略模式
public static void main(String[] args) {
OperatorTest ot = new OperatorTest();
int result;
int i = 5;
int j = 4;
result = ot.operator(i, j, new Sumadd());
System.out.println(result);
result = ot.operator(i, j, new SumSubtract());
System.out.println(result);
result = ot.operator(i, j, new AddSquare());
System.out.println(result);
result = ot.operator(i, j, new SubtractSquare());
System.out.println(result);
result = ot.operator(i, j, new Sumpow());
System.out.println(result);
}
public static int operator(int i, int j, Operator operator) {
return operator.opt(i, j);
}
}
报错: result = ot.operator(i, j, new Sumadd());
'operator(int, int, www.sc.javase.demo1101.pac03.OperatorTest.Operator)' in 'www.sc.javase.demo1101.pac03.OperatorTest' cannot be applied to '(int, int, www.sc.javase.demo1101.pac03.Sumadd)'
idea显式 op.operator后面括号中new Sumadd()下有红线