@SneakyThrows @Test public void testGetObjectByPath() { String path = "java.lang.System/properties.0"; Object val = ClassUtil.getObjectByPath(path); log.info("testGetObjectByPath: path=" + path + "; val=" + val ); assertNotNull("get path should return value", val); }
public static Object getObjectByPath(String path) throws Exception { int p = path.indexOf('/'); if (p < 0) throw new IllegalArgumentException("Path has to include: '/'"); String relativePath = path.substring(p+1); if(relativePath.length() == 0) throw new IllegalArgumentException("Path should have at least one variable section"); String[] pathSectionStrs = relativePath.split("\\."); List<String> pathSections = new ArrayList<String>(Arrays.asList(pathSectionStrs)); return getObjectByPath(Class.forName(path.substring(0, p)), null, pathSections); }
ClassUtil { public static Object getObjectByPath(String path) throws Exception { int p = path.indexOf('/'); if (p < 0) throw new IllegalArgumentException("Path has to include: '/'"); String relativePath = path.substring(p+1); if(relativePath.length() == 0) throw new IllegalArgumentException("Path should have at least one variable section"); String[] pathSectionStrs = relativePath.split("\\."); List<String> pathSections = new ArrayList<String>(Arrays.asList(pathSectionStrs)); return getObjectByPath(Class.forName(path.substring(0, p)), null, pathSections); } }
ClassUtil { public static Object getObjectByPath(String path) throws Exception { int p = path.indexOf('/'); if (p < 0) throw new IllegalArgumentException("Path has to include: '/'"); String relativePath = path.substring(p+1); if(relativePath.length() == 0) throw new IllegalArgumentException("Path should have at least one variable section"); String[] pathSectionStrs = relativePath.split("\\."); List<String> pathSections = new ArrayList<String>(Arrays.asList(pathSectionStrs)); return getObjectByPath(Class.forName(path.substring(0, p)), null, pathSections); }  }
ClassUtil { public static Object getObjectByPath(String path) throws Exception { int p = path.indexOf('/'); if (p < 0) throw new IllegalArgumentException("Path has to include: '/'"); String relativePath = path.substring(p+1); if(relativePath.length() == 0) throw new IllegalArgumentException("Path should have at least one variable section"); String[] pathSectionStrs = relativePath.split("\\."); List<String> pathSections = new ArrayList<String>(Arrays.asList(pathSectionStrs)); return getObjectByPath(Class.forName(path.substring(0, p)), null, pathSections); }  @Deprecated //Used only for testing, don't use in production code @SneakyThrows static void setStaticPrivateField(String className, String fieldName, Object value); @Deprecated //Used only for testing, don't use in production code static void setPrivateField(Object obj, String fieldName, Object value); @Deprecated //Used only for testing, don't use in production code @SneakyThrows static void setPrivateField(Class<?> cls, Object obj, String fieldName, Object value); static Field getDeclaredField(Class<?> cls, String name); static Map<String, BeanProperty> getProperties(Class<?> cls); static Object getObjectByPath(String path); static Object getObjectByPath(Class<?> cls, Object obj, List<String> relativePath); static Object getObjectProperty(Class<?> cls, Object obj, String propertyName); static Class<?> getGenericClass(Type type); static Type[] getGenericTypeActualParams(Type type); static Type[] getGenericTypeActualParamsForInterface(Type type, Class<?> intf); static List<Class<?>> getAllInterface(Class<?> cls); static Class<?> findInterface(Class<?> cls, Class<?> itf); static Field[] getAllFields(Class<?> cls); static Method[] getAllMethods(Class<?> cls); static T stringToEnum(Class<T> cls, String str); @SuppressWarnings({ "unchecked", "rawtypes" }) static T stringToSimpleObject(String str, Class<T> cls, BeanConvertContext ctx); static boolean isSimpleType(Class<?> cls); static Object objectToSimpleType(Object obj, Class<?> cls); static Type getType(String typeName); static StackTraceElement findCallerStackTrace(Class<?> calleeClass); }
ClassUtil { public static Object getObjectByPath(String path) throws Exception { int p = path.indexOf('/'); if (p < 0) throw new IllegalArgumentException("Path has to include: '/'"); String relativePath = path.substring(p+1); if(relativePath.length() == 0) throw new IllegalArgumentException("Path should have at least one variable section"); String[] pathSectionStrs = relativePath.split("\\."); List<String> pathSections = new ArrayList<String>(Arrays.asList(pathSectionStrs)); return getObjectByPath(Class.forName(path.substring(0, p)), null, pathSections); }  @Deprecated //Used only for testing, don't use in production code @SneakyThrows static void setStaticPrivateField(String className, String fieldName, Object value); @Deprecated //Used only for testing, don't use in production code static void setPrivateField(Object obj, String fieldName, Object value); @Deprecated //Used only for testing, don't use in production code @SneakyThrows static void setPrivateField(Class<?> cls, Object obj, String fieldName, Object value); static Field getDeclaredField(Class<?> cls, String name); static Map<String, BeanProperty> getProperties(Class<?> cls); static Object getObjectByPath(String path); static Object getObjectByPath(Class<?> cls, Object obj, List<String> relativePath); static Object getObjectProperty(Class<?> cls, Object obj, String propertyName); static Class<?> getGenericClass(Type type); static Type[] getGenericTypeActualParams(Type type); static Type[] getGenericTypeActualParamsForInterface(Type type, Class<?> intf); static List<Class<?>> getAllInterface(Class<?> cls); static Class<?> findInterface(Class<?> cls, Class<?> itf); static Field[] getAllFields(Class<?> cls); static Method[] getAllMethods(Class<?> cls); static T stringToEnum(Class<T> cls, String str); @SuppressWarnings({ "unchecked", "rawtypes" }) static T stringToSimpleObject(String str, Class<T> cls, BeanConvertContext ctx); static boolean isSimpleType(Class<?> cls); static Object objectToSimpleType(Object obj, Class<?> cls); static Type getType(String typeName); static StackTraceElement findCallerStackTrace(Class<?> calleeClass); static final Type[] EMPTY_TYPE_ARRAY; static final Map<String, Class<?>> PRIMITIVE_TYPE_MAP; }