{"record":{"id":"91b36f7697a02a3d","repo":"Blankj/AndroidUtilCode","slug":"u-can-t-instantiate-me-91b36f","errorCode":null,"errorMessage":"u can't instantiate me...","messagePattern":"u can't instantiate me\\.\\.\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"warning","filePath":"lib/subutil/src/main/java/com/blankj/subutil/util/Utils.java","lineNumber":40,"sourceCode":" *      /  /:/~/::\\  /__/\\   /  /\\  /  /:/~/::\\   _____\\__\\:\\   __|  |:|     \\__\\/\\:\\\n *     /__/:/ /:/\\:| \\  \\:\\ /  /:/ /__/:/ /:/\\:\\ /__/::::::::\\ /__/\\_|:|____    \\  \\:\\\n *     \\  \\:\\/:/~/:/  \\  \\:\\  /:/  \\  \\:\\/:/__\\/ \\  \\:\\~~\\~~\\/ \\  \\:\\/:::::/     \\__\\:\\\n *      \\  \\::/ /:/    \\  \\:\\/:/    \\  \\::/       \\  \\:\\  ~~~   \\  \\::/~~~~      /  /:/\n *       \\  \\:\\/:/      \\  \\::/      \\  \\:\\        \\  \\:\\        \\  \\:\\         /__/:/\n *        \\  \\::/        \\__\\/        \\  \\:\\        \\  \\:\\        \\  \\:\\        \\__\\/\n *         \\__\\/                       \\__\\/         \\__\\/         \\__\\/\n *     blog  : http://blankj.com\n *     time  : 16/12/08\n *     desc  : utils about initialization\n * </pre>\n */\npublic final class Utils {\n\n    @SuppressLint(\"StaticFieldLeak\")\n    private static Application sApplication;\n\n    private Utils() {\n        throw new UnsupportedOperationException(\"u can't instantiate me...\");\n    }\n\n    /**\n     * Init utils.\n     * <p>Init it in the class of Application.</p>\n     *\n     * @param context context\n     */\n    public static void init(final Context context) {\n        if (context == null) {\n            init(getApplicationByReflect());\n            return;\n        }\n        init((Application) context.getApplicationContext());\n    }\n\n    /**\n     * Init utils.","sourceCodeStart":22,"sourceCodeEnd":58,"githubUrl":"https://github.com/Blankj/AndroidUtilCode/blob/7b4caf9e5440046b3fefb63b6b6e2ead7ebaf809/lib/subutil/src/main/java/com/blankj/subutil/util/Utils.java#L22-L58","documentation":"subutil Utils is a final utility class whose private constructor throws UnsupportedOperationException. It holds only a static Application reference and exposes static init/getApp methods; instances are intentionally non-constructible.","triggerScenarios":"Reflective instantiation or unsafe allocation of Utils instead of using its static lifecycle methods.","commonSituations":"Reflection/DI/serialization frameworks that instantiate arbitrary classes; tests that build utilities reflectively.","solutions":["Use the static API: Utils.init(context) once and Utils.getApp(); never instantiate.","Configure reflective frameworks to skip final utility classes.","Remove newInstance paths targeting Utils."],"exampleFix":"// before\nUtils u = reflectNew(Utils.class); // throws\n\n// after\nUtils.init(application);\nApplication app = Utils.getApp();","handlingStrategy":"validation","validationCode":"// subutil Utils is static-only; never instantiate.\nUtils.init(application);\nApplication app = Utils.getApp();","typeGuard":"private static boolean isStaticUtility(Class<?> c) {\n    return Modifier.isFinal(c.getModifiers()) && hasOnlyStaticMethods(c);\n}","tryCatchPattern":null,"preventionTips":["Use Utils.init / Utils.getApp statically; never instantiate.","Configure reflective frameworks to skip final utility classes.","Remove reflective newInstance paths targeting Utils."],"tags":["android","utility","instantiation","reflection","init"],"backgroundTag":null,"analyzedSha":"7b4caf9e5440046b3fefb63b6b6e2ead7ebaf809","analyzedAt":"2026-08-14T02:26:54.956Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}