2010-10-26 8 views
6

Estoy intentando escribir algún código que me permita realizar operaciones matemáticas básicas en una instancia de objeto "T extends Number". Necesita poder manejar cualquier tipo de número que sea una subclase de Number.
Sé que algunos de los tipos en Number tienen métodos integrados .add(), y algunos incluso tienen .multiply() métodos. Necesito poder multiplicar dos variables genéricas de cualquier tipo posible. He buscado y buscado y no he podido encontrar una respuesta clara de ningún tipo.Usar operadores matemáticos en variables genéricas en una clase Java genérica

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());  
} 

Cualquier ayuda sería muy apreciada. Los genéricos son lo más difícil que he encontrado al aprender Java. No me importa hacer el trabajo de piernas porque aprendo mejor de esa manera, por lo que incluso un punto fuerte en la dirección correcta sería muy útil.

+0

Probablemente deberías estar usando 'Math.PI' en lugar de tu literal' 3.14'. – ColinD

+0

Esto no funcionará de esa manera. A medida que T se extiende Número, solo puede llamar a los métodos del Número de clase. – helpermethod

+0

¿Cuál es el propósito de esto? – starblue

Respuesta

4

Lo que tendrá que hacer es usar el doble valor de Number. Sin embargo, esto significa que no puede devolver el tipo Number.

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

Java no permite a los operadores a ser llamados clases (por lo que no +, -, *, /) que tiene que hacer los cálculos como una primitiva (que iba a mostrar el código ... pero jjnguy golpéame :-).

Cuestiones relacionadas