MainMethodStatus (Method method, boolean staticMode) { if ("main".equals(method.getName()) ) { if (!Modifier.isPrivate(method.getModifiers())) { if (staticMode == Modifier.isStatic(method.getModifiers())) { Class<?>[] parameterTypes = method.getParameterTypes(); if (parameterTypes.length == 1 && parameterTypes[0] == String[].class) { return MainMethodStatus.WithArgs; } if (parameterTypes.length == 0) { return MainMethodStatus.WithoutArgs; } } } } return MainMethodStatus.NotMain; }