2010-10-26 34 views
6

"T extends sayısı" nesne örneğinde temel matematik işlemlerini gerçekleştirmeme izin verecek bir kod yazmaya çalışıyorum. Number'un bir alt sınıfı olan herhangi bir sayı türünü idare edebilmelidir.
Number altındaki bazı türlerde .add() yönteminin yerleşik olduğunu ve bazılarının bile .multiply() yöntemlerini olduğunu biliyorum. Herhangi bir olası türden iki genel değişkenleri çarpabilmek gerekir. Aradım ve aradım ve herhangi bir türden net bir cevap alamadım.Genel bir matematik sınıfında genel değişkenler üzerinde matematik işleçleri kullanın

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

Herhangi bir yardım çok takdir edilecektir. Jenerikler, Java öğrenirken karşılaştığım en zor şey. Bacak işini yapmamın sakıncası yok çünkü bu şekilde daha iyi öğreniyorum, bu yüzden doğru yönde güçlü bir nokta bile çok yardımcı olacaktır.

+0

Muhtemelen '3.14 'kelimenizin yerine' Math.PI' kullanmalısınız. – ColinD

+0

Bu şekilde çalışmayacak. T Sayıyı genişlettikçe, yalnızca sınıf Numarası yöntemlerini çağırmanıza izin verilir. – helpermethod

+0

Bunun amacı nedir? – starblue

cevap

4

Yapmanız gereken şey, Number'un çift değerini kullanmaktır. Ancak, bu, Number türünü döndüremediğiniz anlamına gelir.

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

Java operatörleri sınıfları üzerinde çağrılacak izin vermez (yani hiçbir +, -, *, /) (ı kodunu göstermek için gidiyordu ... ilkel olarak matematik yapmak zorunda ama jjnguy bana onu dövdüm :-).