注册 登录
编程论坛 JAVA论坛

java小白上路,有个接口和策略模式的小疑问

wyh416 发布于 2021-11-02 17:14, 2000 次点击
我的任务是两个数的各种操作,可以用一个方法一起实现
开始我写了一个接口,,,写了多个实现类,在最后的测试单元中,我首先写了一个可以统一实现的方法,在策略模式的时候很成功,学这个的最终目的是为了掌握&表达式,将写的代码不断简化,我写的方法要用接口对象,我将之改写成了内部接口,在调用的时候出现了一些问题,之前写的实现类用不了了,一应该是我的定义对象有问题,不知道怎么解决,希望有经验的大佬指点一下!
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()下有红线
0 回复
1