Java tutorial
//package com.java2s; //License from project: Apache License import java.util.HashMap; import java.util.WeakHashMap; public class Main { private static final WeakHashMap<Object, HashMap<String, Object>> additionalFields = new WeakHashMap<Object, HashMap<String, Object>>(); public static Object setAdditionalStaticField(Object obj, String key, Object value) { return setAdditionalInstanceField(obj.getClass(), key, value); } public static Object setAdditionalStaticField(Class<?> clazz, String key, Object value) { return setAdditionalInstanceField(clazz, key, value); } public static Object setAdditionalInstanceField(Object obj, String key, Object value) { if (obj == null) throw new NullPointerException("object must not be null"); if (key == null) throw new NullPointerException("key must not be null"); HashMap<String, Object> objectFields; synchronized (additionalFields) { objectFields = additionalFields.get(obj); if (objectFields == null) { objectFields = new HashMap<String, Object>(); additionalFields.put(obj, objectFields); } } synchronized (objectFields) { return objectFields.put(key, value); } } }