2015-12-21 63 views
1

,我怎樣才能使一個泛型類的構造函數,以便它可以接受任何類傳遞給它如何使給定下面的代碼的通用型

代碼的構造方法:

ServiceCtrl(Context ctx, Class<SPPService> sppServiceClass) { 
    this.mCtx = ctx; 
    this.mClass = sppServiceClass; 
} 

public boolean isMyServiceRunning() { 
    ActivityManager manager = (ActivityManager) this.mCtx.getSystemService(this.mCtx.ACTIVITY_SERVICE); 
    for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (this.mClass.getName().equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

怎麼樣'類'? – Flown

+0

@Flown會請你提供一個例子,因爲當我使用? android studion在構造函數中強調了第二行,用紅色 – user2121

+1

@ user2121:你是否也更改了'mClass'成員的聲明? –

回答

1
public class ServiceCtrl<E extends Object> { 
    private Class<E> mClass; 

    ServiceCtrl(Context ctx, Class<E> sppServiceClass) { 
     this.mCtx = ctx; 
     this.mClass = sppServiceClass; 
    } 

    public boolean isMyServiceRunning() { 
     ActivityManager manager = (ActivityManager) this.mCtx.getSystemService(this.mCtx.ACTIVITY_SERVICE); 
     for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
      if (this.mClass.getName().equals(service.service.getClassName())) { 
       return true; 
      } 
     } 
     return false; 
    } 
} 
+0

E總是用紅色突出顯示爲錯誤 – user2121

+0

@ user2121將'添加到您的類定義中,因爲我編輯 –

+0

請您告訴我E和「?」之間的區別。 ? – user2121

1

你的意思是,在構造函數中使sppServiceClass是通用的?

如果是這樣,你正在尋找這樣的:

ServiceCtrl(Context ctx, Class<?> clazz) { 
    ... 
} 

編輯:您需要更改的mClass聲明,以及到Class<?>

相關問題