Используйте математические операторы для общих переменных в универсальном классе Java - PullRequest
6 голосов
/ 27 октября 2010

Я пытаюсь написать некоторый код, который позволит мне выполнять основные математические операции над экземпляром объекта "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. Я не возражаю заниматься работой ног, потому что я лучше учусь таким образом, поэтому даже сильная сторона в правильном направлении была бы очень полезна.

Ответы [ 3 ]

4 голосов
/ 27 октября 2010

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

public double getArea()
{
    return  3.14 * 
            (circle.getRadius().doubleValue()) * 
            (circle.getRadius().doubleValue());      
}  
1 голос
/ 10 августа 2011

Вы должны проверить http://code.google.com/p/generic-java-math/, это решает проблему с общей арифметикой в ​​Java, и даже может иметь геометрические функции, которые вы хотите.

1 голос
/ 27 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...