Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java编写通用向量(数学)类_Java_Vector - Fatal编程技术网

用Java编写通用向量(数学)类

用Java编写通用向量(数学)类,java,vector,Java,Vector,我需要编写一个向量类,它接受Java中的任何基本数字类型。 我的vector类应该只接受2个组件。这就是我遇到麻烦的地方 我必须写一个函数,将两个向量相加,然后返回一个全新的向量 如果有人知道允许我的向量类接受原语类型并执行Python之类的向量操作的解决方案,请给我指出正确的方向 类似于伪代码: AddVectors( V1, V2): return new Vector( V1.getX + V2.getX, V1.getY + V2.getY) 下面是我的向量类的一些剪贴代

我需要编写一个向量类,它接受Java中的任何基本数字类型。 我的vector类应该只接受2个组件。这就是我遇到麻烦的地方

我必须写一个函数,将两个向量相加,然后返回一个全新的向量

如果有人知道允许我的向量类接受原语类型并执行Python之类的向量操作的解决方案,请给我指出正确的方向

类似于伪代码:

 AddVectors( V1, V2): 
     return new Vector( V1.getX + V2.getX, V1.getY + V2.getY)
下面是我的向量类的一些剪贴代码:

public class Vector<T> {

     private T x;
     private T y;

     public Vector(T x, T y){
         this.x = x;
         this.y = y;

     }

    public T getX(){
         return x;
     }

     public T getY(){
        return y;
     }
}
公共类向量{
私人信托;
私人信托;
公共向量(TX,TY){
这个.x=x;
这个。y=y;
}
公共T getX(){
返回x;
}
公共T getY(){
返回y;
}
}

你不能。泛型不能用于原语(例如
int
)。它们可以用于盒装版本(例如,
Integer
),但是没有添加两个对象(所有盒装原语都是子类)的通用方法,因此结论是:您不能!您知道Java中我的vector类接受任何类型的基元数并执行向量操作的其他方式吗?不是“任何类型的基元”,不知道。但是您可以实现一个
版本,它可以处理任何应该处理
字节
int
浮点
的操作。Double只有53位精度,因此它不能处理所有
long
值,但与其创建
long
版本,我建议第二个实现执行
BigDecimal
,它可以处理所有值。或者可能只有
BigDecimal
版本。我会记住这一点。谢谢。所以真的没有办法让Java像Python的鸭子类型一样吗?