у меня есть математический класс, который хранит представление выражений в списках n-массивов
в настоящее время у меня есть три класса AdditionArray MultipleArray и Variable, все они реализуют мой интерфейс Number.
public interface Number {
public Number Multiply(Number number);
в классах, которые реализуют Number, у меня перегружены операции, такие как Multiply, например,
public class MultipleArray extends ArrayList<Number> implements Number{
public Number Multiply(AdditionArray number);
public Number Multiply(Number number){throw new Exception("woops");}
Дело в том, что Java не вызывает автоматически перегруженную функцию во время выполнения. это кажется, чтобы выяснить это во время компиляции
например
Number someNumber = new MultipleArray();
Number someOtherNumber = new AdditonArray();
MultipleArray result2 = someNumber.Multiply(someOtherNumber); //calls the correct function
Number result2 = someNumber.Multiply(someOtherNumber); // throws the woops exception
почему java делает это. и есть ли другой способ, которым я могу реализовать это. какая-то фабрика например?
Cheers,
Mark