/*
* 練習問題21.2 p.522
* 400頁のDataHandlerクラスを書きなおして、1つのWeakReferenceの代わりにWeakHashMapを使用して
* 返されたデータを保持するようにしなさい。
*/
package ch21.ex21_02;
import java.util.WeakHashMap;
import java.io.File;
public class DataHandler
{
// private File lastFile; // 最後に読んだファイル
// private WeakReference<byte[]> lastData; // (おそらく)最後のデータ
private WeakHashMap<Integer, byte[]> savedData;
byte[] readFile(File file)
{
byte[] data;
// データを記憶しているか調べる
// if ((file.equals(lastFile)))
if (savedData.containsKey(file.hashCode()))
{
// data = lastData.get();
data = savedData.get(file.hashCode());
if (data != null)
{
return data;
}
}
// 記憶していないので、読み込む
data = readBytesFromFile(file);
// lastFile = file;
// lastData = new WeakReference<byte[]>(data);
savedData.put(file.hashCode(), data);
return data;
}
public byte[] readBytesFromFile(File file)
{
// 中身は適当
file.toString();
return new byte[5];
}
public static void main(String[] args)
{
// テスト…?
}
}