@SuppressWarnings("unchecked") public static <T> T tryInvoke(Object target, String methodName, Class<?>[] argTypes, Object... args) { try { Method method = sCachedMethods.get(methodName); if (method != null) { return (T) method.invoke(target, args); } method = target.getClass().getDeclaredMethod(methodName, argTypes); sCachedMethods.put(methodName, method); return (T) method.invoke(target, args); } catch (Exception pokemon) { Log.e(TAG, "Unable to invoke " + methodName + " on " + target, pokemon); } return null; }
public static Typeface get(Context c, String name) { synchronized (cache) { if (!cache.containsKey(name)) { Typeface t = Typeface.createFromAsset( c.getAssets(), String.format("fonts/%s.ttf", name)); cache.put(name, t); return t; } return cache.get(name); } } }
@Override public void registerAdapterDataObserver(@NonNull RecyclerView.AdapterDataObserver observer) { if (!observers.containsKey(observer)) { final BookmarksDataObserverWrapper wrapper = new BookmarksDataObserverWrapper(observer, this); observers.put(observer, wrapper); super.registerAdapterDataObserver(wrapper); } }
public static <M, T extends Schema<M>> T register(@NonNull T schema) { SCHEMAS.put(schema.getModelClass(), schema); return schema; }
@NonNull @SuppressWarnings("unchecked") public static <T> Schema<T> get(@NonNull Class<T> modelClass) { Schema<T> schema = (Schema<T>) SCHEMAS.get(modelClass); if (schema == null) { throw new RuntimeException("No schema found for " + modelClass); } return schema; } }