我有了一個方法添加這需要一個Runnable
,並在數毫秒內的任務計劃安排線程池類存儲類類型:在豆
public static void addScheduler(Runnable r, long millis) {
//scheduling code
//now I want to save it to check later
ScheduledTask st = new ScheduledTask();
st.setTaskType(r.getClass());
st.setFrequency(millis);
persistentes.add(st); //this is an ArrayList<ScheduledTask>
}
現在我想以存儲任務信息到一個ArrayList稍後檢查它,但是當我保存任務的信息並檢查taskType時,它總是java.lang.Class。我明白這是因爲Java類型的擦除,但有沒有辦法來存儲類的類型?
這是我ScheduledTask類:
public class ScheduledTask {
private Class<?> taskType;
private long frequency;
public Class<?> getTaskType() {
return taskType;
}
public void setTaskType(Class<?> taskType) {
this.taskType = taskType;
}
public long getFrequency() {
return frequency;
}
public void setFrequency(long frequency) {
this.frequency = frequency;
}
public String toString(){
return taskType.getClass().getName()+ ": " + (frequency/1000) + " seg.";
}
}
看不出OP如何回答問題。 – darrengorman
@milkplusvellocet op的q正在討論*檢查任務類型*。我假設有差異類型的任務,並且需要檢查哪些類型的任務存在。如果意圖只是打印任務的名稱,getName()就足夠了。 –
'您可以使用newInstance()創建新實例。'爲什麼只是爲了檢查已經可用的類型信息而創建一個新對象。 '可以檢查類型(使用instanceof操作符)'。'你將使用instanceof檢查哪些類型? – darrengorman