2010-10-26 3 views
6

Я пытаюсь написать некоторый код, который позволит мне выполнять основные математические операции на экземпляре объекта «T extends Number». Он должен иметь возможность обрабатывать любой тип номера, который является подклассом Number.
Я знаю, что некоторые из типов под Number имеют .add() методы, встроенные, а некоторые даже имеют методы .multiply(). Мне нужно уметь умножать две общие переменные любого возможного типа. Я искал и искал и не смог найти четкого ответа.Использовать математические операторы для общих переменных в общем классе Java

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

Возможно, вы должны использовать 'Math.PI', а не буквальный' 3.14'. – ColinD

+0

Это не сработает. Поскольку T extends Number, вам разрешено вызывать методы класса Number. – helpermethod

+0

Какова цель этого? – starblue

ответ

4

Что вам нужно сделать, это использовать двойное значение Number. Однако это означает, что вы не можете вернуть тип Number.

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

Java не позволяет операторам быть вызван классами (не +, -, *, /), вы должны сделать математику как примитив (я собирался показать код ... но jjnguy избили меня до него :-).

Смежные вопросы