java中通用概念的算术运算

时间:2013-06-23 17:09:33

标签: java

我试图计算抽象类中的工资(我在其中实现一个接口) 并尝试将该抽象类扩展到另一个类并为该薪水添加一些激励但是当我进行计算时它显示'+'opertor是通用类型

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 :");
   }
}

package com.demo;

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

}

1 个答案:

答案 0 :(得分:0)

你的整个方法都是错误的,有人提到你不能用泛型做数学,因为没有为自动装箱类(Integer,Double等)定义数学运算符。如果你的工资从未超过双倍的最大值,那就是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);
}

}