-1

我试图计算抽象类中的薪水(其中我实现了一个接口)并试图将该抽象类扩展到另一个类并为该薪水增加一些激励但是当我计算时它显示'+'操作符被泛型低估了类型

import java.util.List;

public abstract class SalaryInfo<T, V extends Number> implements info<T, V> {
   T hours;
   T rate;
   T pay;

   public void calculatePay(T hours, T rate) {
      pay = hours * rate;
      // Do your math with Integer class methods help
   }

   // return new Double(hours.doubleValue() * rate.doubleValue());
   // System.out.println("pay is b :" +pay);
   public void show() {
      System.out.println("post is :");
   }
}

包com.demo;

public interface info<T,V>  
{
    public void calculatePay(T hours, T rate);
    public void perinfo(V empid,T empname );
    public void display();

}
4

1 回答 1

0

您的整个方法是错误的,有人提到您不能使用泛型进行数学运算,因为没有为自动装箱类(整数、双精度等)定义数学运算符。如果您的支付从未超过双打的最大值,10^308那么您可以简单地将支付率存储在双打中,其余的接口实现将与以前一样。

public interface info<T, V> {
public void calculatePay(double hours, double rate);

public void perinfo(V empid, T empname);

public void display();

}

随着实施

public class SalaryInfo<T extends Number, V extends Number> implements
    info<T, V> {

double hours, rate, pay;

@Override
public void perinfo(V empid, T empname) {

}

@Override
public void display() {

}

@Override
public void calculatePay(double hours, double rate) {
    pay = hours * rate;
}

public void show() {
    System.out.println(pay);
}

}
于 2013-06-23T18:14:01.230 回答