Это довольно сложно, но я постараюсь прояснить свой вопрос настолько, насколько это возможно.Поэтому я работаю над проектом, который занимается операциями с векторами.У меня есть разные классы для разных размеров: Vector3D, Vector5D и VectorND.Итак, у меня есть интерфейс и абстрактный класс, которые описывают такие методы, как Sum, Subtraction и т. Д. И для результата операции я создаю новый объект Vector, в который я помещаю координаты после sum / subtraction и т. Д. Так вот часть кода в качестве примера:
interface sample
{
Vector Sum(Vector vec);
Vector Subtraction(Vector vec);
int Product(Vector vec);
boolean Compare(Vector vec);
String ToString();
}
abstract class Vector implements sample
{
int[] coordinates;
public Vector (int[] coordinates)
{
this.coordinates=coordinates;
}
protected abstract Vector resVec();
public Vector Sum(Vector vec)
{
Vector result = resVec();
if (this.coordinates.length == vec.coordinates.length)
{
for (int i = 0; i< vec.coordinates.length; i++)
{
result.coordinates[i] = this.coordinates[i] + vec.coordinates[i];
}
}
else
{
throw new ArithmeticException("Can't sum vectors of different length");
}
return result;
Вот защитник abstart Vector resVec ();- метод, который создает новый вектор с длиной, которая зависит от размерности векторов, с которыми мы работаем.Пример реализации для Vector3D:
class Vector3D extends Vector
{
public Vector3D(int n1,int n2,int n3)
{
super(new int[]{n1,n2,n3});
}
public Vector3D resVec()
{
Vector3D resVec = new Vector3D(0,0,0);
return resVec;
}
Итак, здесь я создаю новый вектор длиной 3 и заполняю его нулями.Мне нужно создать такой же вектор для VectorND.Примерно так:
class VectorND extends Vector
{
public VectorND(int...n)
{
super(n);
}
public VectorND resVec()
{
VectorND resVec = new VectorND();
return resVec;
}
Есть идеи, как мне передать не объявленное количество нулей?Или, может быть, есть идея другой реализации?Спасибо!