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

时间:2010-10-26 21:55:22

标签: java generics math

我正在尝试编写一些代码,允许我在“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());      
}  

非常感谢任何帮助。泛型是我在学习Java时遇到的最困难的事情。我不介意做腿部工作,因为我以这种方式学得更好,所以即使是正确方向的强点也会非常有帮助。

3 个答案:

答案 0 :(得分:4)

您需要做的是使用Number的double值。但是,这意味着您无法返回Number类型。

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

答案 1 :(得分:1)

Java不允许在类上调用运算符(所以没有+, - ,*,/)你必须将数学作为基元(我打算显示代码......但是jjnguy打败了我: - 。)

答案 2 :(得分:1)

你应该检查http://code.google.com/p/generic-java-math/,它解决了java中泛型算法的问题,甚至可能有你想要的几何函数。