001/* 002 * To change this template, choose Tools | Templates 003 * and open the template in the editor. 004 */ 005 006package com.nativelibs4java.util; 007 008import java.util.HashMap; 009import java.util.Map; 010 011/** 012 * 013 * @author ochafik 014 */ 015public abstract class Cache<K, V> { 016 Map<K, V> map; 017 public Cache() { 018 this(new HashMap<K, V>()); 019 } 020 public Cache(Map<K, V> map) { 021 this.map = map; 022 } 023 public synchronized V get(K key) { 024 V value = map.get(key); 025 if (value == null) 026 map.put(key, value = createValue(key)); 027 return value; 028 } 029 public abstract V createValue(K key); 030}