我正在尝试编写一些代码,允许我在“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时遇到的最困难的事情。我不介意做腿部工作,因为我以这种方式学得更好,所以即使是正确方向的强点也会非常有帮助。
答案 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中泛型算法的问题,甚至可能有你想要的几何函数。