如何在两个接口之间建立有效连接(使用泛型)?

时间:2016-10-11 17:04:23

标签: java generics interface

首先,如果这是一个重复的问题,请原谅我。

我正在为无限数字编写计算器。 由于这是无限数量,我决定使用链表结构来存储我的数字。

我写了两个接口:Numbers存储数字,basicOperations用于操作。

我有两个类:ComplexNon_complex,它们实现了数字。

连接NumbersbasicOperations的最简单方法是basicOperationsComplex实施Non_Complex并创建实例并进行计算,如下所示:

interface basicOperations {

    String addition(Numbers anotherNumber);
    // other methods
}


interface Numbers {
    //some methods
}


public class Complex implements Numbers, basicOperations {

    /**
     * some codes . . .
     */

    String addition(Numbers anotherNumber) {
        Complex secondNumber = (Complex) anotherNumber;
        /**
         * do the calculation and return the result
         */
    }
}

同样适用于Non_complex

最后我将使用switch-case,从输入中指定操作,创建ComplexNon_complex的2个实例并在其中存储输入的数字,然后进行计算。

不知怎的,我不想用这种方式。我想用更复杂(更好)的方式挑战自己。我已经想过某些方法,其中之一是:

创建一个类(假设它的名称是connect)并在其中执行操作:

class connect {

    char currentOperation;

    void calculate(Numbers A, Numbers B) {
        if (currentOperation == '+') {
            addition.DoIt(A, B);
        }

        class addition implements calculate {

            static void <U extends Complex> DoIt(U num1, U num2) {
                System.out.println(num1.addition(num2));
            }

            static void <U extends non_Complex> DoIt(U num1, U num2) {
                System.out.println(num1.addition(num2));
            }

            static void <U extends Numbers> DoIt(U num1, U num2) {
                if (num1 instanceof Complex) {
                    Complex A = (Complex) num1;
                    Complex B = (Complex) num2;
                    System.out.println(A.addition(B));
                } else {
                    // the same codes like `if` will go for `Non-complex`.
                }
            }
        }
    }


interface calculate {

        static void <U extends Numbers> DoIt(U num1, U num2);
        static void <U extends Complex> DoIt(U num1, U num2);
        static void <U extends Non_complex> DoIt(U num1, U num2);


}

其他方式类似于这种方式(使用泛型并连接类中的两个接口等)。

我是仿制药的新手,这是我第一次使用多个界面。我知道有很多方法,我根据我的计划寻找最佳。

现在,由于问题标题,哪种方式更有效,更优化,更好地在各个方面?

并且我对泛型的使用是正确的还是我必须以另一种方式编写它?

非常感谢。

0 个答案:

没有答案