首先,如果这是一个重复的问题,请原谅我。
我正在为无限数字编写计算器。 由于这是无限数量,我决定使用链表结构来存储我的数字。
我写了两个接口:Numbers
存储数字,basicOperations
用于操作。
我有两个类:Complex
和Non_complex
,它们实现了数字。
连接Numbers
和basicOperations
的最简单方法是basicOperations
和Complex
实施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,从输入中指定操作,创建Complex
或Non_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);
}
其他方式类似于这种方式(使用泛型并连接类中的两个接口等)。
我是仿制药的新手,这是我第一次使用多个界面。我知道有很多方法,我根据我的计划寻找最佳。
现在,由于问题标题,哪种方式更有效,更优化,更好地在各个方面?
并且我对泛型的使用是正确的还是我必须以另一种方式编写它?
非常感谢。