{"record":{"id":"45d4c42f16941521","repo":"Blankj/AndroidUtilCode","slug":"u-can-t-instantiate-me-45d4c4","errorCode":null,"errorMessage":"u can't instantiate me...","messagePattern":"u can't instantiate me\\.\\.\\.","errorType":"exception","errorClass":"UnsupportedOperationException","httpStatus":null,"severity":"error","filePath":"lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java","lineNumber":57,"sourceCode":"import static android.Manifest.permission.ACCESS_COARSE_LOCATION;\nimport static android.Manifest.permission.ACCESS_NETWORK_STATE;\nimport static android.Manifest.permission.ACCESS_WIFI_STATE;\nimport static android.Manifest.permission.CHANGE_WIFI_STATE;\nimport static android.Manifest.permission.INTERNET;\nimport static android.content.Context.WIFI_SERVICE;\n\n/**\n * <pre>\n *     author: Blankj\n *     blog  : http://blankj.com\n *     time  : 2016/08/02\n *     desc  : utils about network\n * </pre>\n */\npublic final class NetworkUtils {\n\n    private NetworkUtils() {\n        throw new UnsupportedOperationException(\"u can't instantiate me...\");\n    }\n\n    public enum NetworkType {\n        NETWORK_ETHERNET,\n        NETWORK_WIFI,\n        NETWORK_5G,\n        NETWORK_4G,\n        NETWORK_3G,\n        NETWORK_2G,\n        NETWORK_UNKNOWN,\n        NETWORK_NO\n    }\n\n    /**\n     * Open the settings of wireless.\n     */\n    public static void openWirelessSettings() {\n        Utils.getApp().startActivity(","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/Blankj/AndroidUtilCode/blob/7b4caf9e5440046b3fefb63b6b6e2ead7ebaf809/lib/utilcode/src/main/java/com/blankj/utilcode/util/NetworkUtils.java#L39-L75","documentation":"NetworkUtils is a final utility class providing static methods for network detection (getNetworkType, getIPAddress, openWirelessSettings, etc.) and a NetworkType enum. Its private constructor throws UnsupportedOperationException to enforce static-only access.","triggerScenarios":"Direct or reflective instantiation by DI frameworks, mocking libraries, serialization frameworks, or manual reflection.","commonSituations":"DI component scanning of the utility package; Mockito mock creation targeting NetworkUtils; Gson/Jackson deserialization with the class as target; ProGuard keep rules that enable reflective construction.","solutions":["Use static methods: NetworkUtils.getNetworkType(), NetworkUtils.isWifiConnected(). Never instantiate.","Access the NetworkType enum via NetworkUtils.NetworkType.NETWORK_WIFI etc.","Exclude utility classes from DI scanning and serialization configs.","Mock static methods with mockito-inline for testing."],"exampleFix":"// before\nNetworkUtils nu = new NetworkUtils();\nboolean wifi = nu.isWifiConnected();\n\n// after\nboolean wifi = NetworkUtils.isWifiConnected();","handlingStrategy":"type-guard","validationCode":"// NetworkUtils is static-only\nNetworkUtils.NetworkType type = NetworkUtils.getNetworkType();\nboolean wifi = NetworkUtils.isWifiConnected();","typeGuard":"static boolean isStaticUtility(Class<?> c) {\n    return Modifier.isFinal(c.getModifiers()) && c.getSimpleName().endsWith(\"Utils\");\n}","tryCatchPattern":"try {\n    NetworkUtils.class.getDeclaredConstructor().setAccessible(true);\n    NetworkUtils.class.getDeclaredConstructor().newInstance();\n} catch (UnsupportedOperationException e) {\n    // Use static methods\n}","preventionTips":["Never instantiate classes ending in 'Utils'.","Exclude util packages from DI and serialization scanning.","Access NetworkType via NetworkUtils.NetworkType enum values.","Mock static methods with mockito-inline for testing."],"tags":["java","android","utility-class","instantiation","network"],"backgroundTag":null,"analyzedSha":"7b4caf9e5440046b3fefb63b6b6e2ead7ebaf809","analyzedAt":"2026-08-14T02:26:54.956Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}