对泛型Java类中的泛型变量使用数学运算符

对泛型Java类中的泛型变量使用数学运算符,java,generics,math,Java,Generics,Math,我正在尝试编写一些代码,使我能够对“T extends Number”对象实例执行基本的数学运算。它需要能够处理属于number子类的任何数字类型 我知道Number下的一些类型内置了.add()方法,有些甚至有.multiply()方法。我需要能够乘以任何可能类型的两个通用变量。我找了又找,找不出任何明确的答案 public class Circle<T extends Number> { private T center; private T radius; private T

我正在尝试编写一些代码,使我能够对“T extends Number”对象实例执行基本的数学运算。它需要能够处理属于
number
子类的任何数字类型
我知道
Number
下的一些类型内置了
.add()
方法,有些甚至有
.multiply()
方法。我需要能够乘以任何可能类型的两个通用变量。我找了又找,找不出任何明确的答案

public class Circle<T extends Number> {

private T center;
private T radius;
private T area;

// constructor and other various mutator methods here....

/**
  The getArea method returns a Circle
  object's area.
  @return The product of Pi time Radius squared.
*/
public Number getArea() {
    return  3.14 * (circle.getRadius()) * (circle.getRadius());      
}  
公共类圈子{
私人T中心;
私人T半径;
私人住宅区;
//构造函数和其他各种变式方法。。。。
/**
getArea方法返回一个圆
物体的面积。
@返回Pi时间半径平方的乘积。
*/
公共号码getArea(){
返回3.14*(circle.getRadius())*(circle.getRadius());
}  

任何帮助都将不胜感激。泛型是我在学习Java过程中遇到的最困难的事情。我不介意做腿部工作,因为这样我会学得更好,所以即使是正确方向上的强项也会非常有用。

您需要做的是使用
数字的双值。然而,这意味着s表示您不能返回
编号
类型

public double getArea()
{
    return  3.14 * 
            (circle.getRadius().doubleValue()) * 
            (circle.getRadius().doubleValue());      
}  

Java不允许在类上调用运算符(因此没有+,-,*,/),您必须将其作为原语进行计算(我要展示代码…但jjnguy抢先一步:-).

您可能应该使用
Math.PI
而不是您的literal
3.14
。这样不行。由于t扩展了Number,您只能调用类Number的方法。