--- tags: Java --- # Java 物件轉型 ## 方法 1:使用 Class<T> 參數(推薦) ```java default <T> T getFirstByName(String name, Class<T> classType) { String value = getFirstByName(name); if (!StringUtils.hasText(value)) return null; try { return objectMapper.readValue(value, classType); } catch (Exception e) { throw new RuntimeException("Failed to parse value for name: " + name, e); } } ``` **使用方式:** ```java // 呼叫時傳入 Class 物件 MyClass result = getFirstByName("paramName", MyClass.class); ``` ## 方法 2:使用 TypeReference(適合複雜類型) ```java default <T> T getFirstByName(String name, TypeReference<T> typeReference) { String value = getFirstByName(name); if (!StringUtils.hasText(value)) return null; try { return objectMapper.readValue(value, typeReference); } catch (Exception e) { throw new RuntimeException("Failed to parse value for name: " + name, e); } } ``` **使用方式:** ```java // 對於簡單類型 MyClass result = getFirstByName("paramName", new TypeReference<MyClass>(){}); // 對於複雜泛型類型(如 List<MyClass>) List<MyClass> resultList = getFirstByName("paramName", new TypeReference<List<MyClass>>(){}); ```