Runnable
スケジュールするタスクとして数ミリ秒かかる add メソッドを持つ ThreadPool クラスがあります。
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.";
}
}