---
# System prepended metadata

title: Java 物件轉型
tags: [Java]

---

---
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>>(){});
```