对泛型Java类中的泛型变量使用数学运算符
我正在尝试编写一些代码,使我能够对“T extends Number”对象实例执行基本的数学运算。它需要能够处理属于对泛型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
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
而不是您的literal3.14
。这样不行。由于t扩展了Number,您只能调用类Number的方法。