2013-06-23 51 views
-1

即時嘗試計算抽象類中的工資(其中即時實現一個接口) 並嘗試將該抽象類擴展到另一個類中併爲該工資添加一些激勵,但是當計算出它顯示'+'opertor是與通用類型underifned在java中使用通用概念的生成操作

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

} 
+2

請表明,導致錯誤的代碼。請稍微壓縮您的代碼,以便閱讀。明智地使用空白有助於提高代碼的可讀性,但太多的空白會降低可讀性。代碼越可讀,您可能會得到更好的答案。謝謝。 –

+0

這已被問了好幾次。您不能對類僅使用基本類型的算術運算。 –

+0

@HovercraftFullOfEels TL; DR OP想要使用'Number a;數字b;爲這些對象返回a + b;'和其他算術運算。 –

回答

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

} 
+0

thnks很多先生,但假設如果我想用通用的方式來提供工資計算中的值shuld我做... plz告訴我..... – user2514033

+0

和你在perinfo中寫T,所以在運行時它顯示一些字符串和數字相關的prblm bcoz作爲empname im傳遞sm名稱,所以它是shwoing sm字符串類型錯誤... – user2514033

+0

嘿....任何人告訴我有關此prblm的解決方案 – user2514033