У меня есть метод, реализующий метод интерфейса. это выглядит следующим образом:Как использовать Тип класса Общий метод
@Override
public Double calculate(Class<Float> score) {
if (score == null) {
return null;
}
Double beta0 = new Double(-7.7631);
Double beta1 = new Double(0.0737);
Double beta2 = new Double(0.9971);
Log log = new Log();
Exp exp = new Exp();
Double logit = beta0 + (beta1 * score) + (beta2 * log.value(new Double(score + 1)));
Double rod = exp.value(logit)/(1 + exp.value(logit));
return rod;
}
Интерфейс
public interface Calculator<T,S> {
public T calculate(Class<S> params);
}
Я получаю ошибку компиляции, что the operator '*' is not defined for the argument type(s) Double, Class<Float>
.
Думаю, я ожидал этого, но не знаю, как это исправить. Извините, если это простой вопрос .....
Возможно, вам стоит прочитать «Класс >» –
Непонятно также, почему вы используете классы вообще. У вашего кода нет преимущества использования 'Double' вместо' double' и использование 'double Double (...)' принимает значение max. – Holger
Я пытался использовать дженерики, так что некоторые реализации калькулятора могли принимать другие типы. – skyman