Если вы действительно хотите придерживаться Singleton для вашего случая, ниже есть Java отражение способ сброса одного экземпляра :
public static void setPrivateField(Class clazz, Object inst, String field, Object value) throws Exception {
java.lang.reflect.Field f = clazz.getDeclaredField(field);
f.setAccessible(true);
f.set(inst, value);
f.setAccessible(false);
}
Просто вызывайте этот метод, как показано ниже, везде, где вам нужно сбросить singleton :
setPrivateField(M_Singleton.class, null, "uniqueInstance", null);