{"record":{"id":"3ee616c7c7060b94","repo":"Blankj/AndroidUtilCode","slug":"u-can-t-instantiate-me-3ee616","errorCode":null,"errorMessage":"u can't instantiate me...","messagePattern":"u can't instantiate me\\.\\.\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"warning","filePath":"lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java","lineNumber":40,"sourceCode":"import androidx.annotation.AnimRes;\nimport androidx.annotation.NonNull;\nimport androidx.annotation.Nullable;\nimport androidx.core.app.ActivityOptionsCompat;\nimport androidx.core.util.Pair;\nimport androidx.fragment.app.Fragment;\n\n/**\n * <pre>\n *     author: Blankj\n *     blog  : http://blankj.com\n *     time  : 2016/09/23\n *     desc  : utils about activity\n * </pre>\n */\npublic final class ActivityUtils {\n\n    private ActivityUtils() {\n        throw new UnsupportedOperationException(\"u can't instantiate me...\");\n    }\n\n    /**\n     * Add callbacks of activity lifecycle.\n     *\n     * @param callbacks The callbacks.\n     */\n    public static void addActivityLifecycleCallbacks(@Nullable final Utils.ActivityLifecycleCallbacks callbacks) {\n        UtilsBridge.addActivityLifecycleCallbacks(callbacks);\n    }\n\n    /**\n     * Add callbacks of activity lifecycle.\n     *\n     * @param activity  The activity.\n     * @param callbacks The callbacks.\n     */\n    public static void addActivityLifecycleCallbacks(@Nullable final Activity activity,","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/Blankj/AndroidUtilCode/blob/7b4caf9e5440046b3fefb63b6b6e2ead7ebaf809/lib/utilcode/src/main/java/com/blankj/utilcode/util/ActivityUtils.java#L22-L58","documentation":"ActivityUtils (utilcode) is a final utility class whose private constructor throws UnsupportedOperationException. It exposes only static activity helpers; instances are intentionally forbidden.","triggerScenarios":"Reflective instantiation or unsafe allocation of ActivityUtils rather than calling its static methods.","commonSituations":"Reflection/DI/serialization frameworks that build arbitrary classes; tests that reflectively scaffold utilities.","solutions":["Use the static API, e.g. ActivityUtils.startActivity(...), ActivityUtils.getActivityByContext(ctx); never instantiate.","Configure reflective frameworks to skip final utility classes.","Remove newInstance paths targeting ActivityUtils."],"exampleFix":"// before\nActivityUtils a = reflectNew(ActivityUtils.class); // throws\n\n// after\nActivityUtils.startActivity(intent);","handlingStrategy":"validation","validationCode":"// ActivityUtils is static-only; never instantiate.\nActivityUtils.startActivity(intent);","typeGuard":"private static boolean isStaticUtility(Class<?> c) {\n    return Modifier.isFinal(c.getModifiers()) && hasOnlyStaticMethods(c);\n}","tryCatchPattern":null,"preventionTips":["Use ActivityUtils via its static methods only.","Configure reflective frameworks to skip final utility classes.","Remove reflective newInstance calls targeting utilities."],"tags":["android","utility","instantiation","reflection","activity"],"backgroundTag":null,"analyzedSha":"7b4caf9e5440046b3fefb63b6b6e2ead7ebaf809","analyzedAt":"2026-08-14T02:26:54.956Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}