java如何获取泛型
依赖:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>29.0-jre</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
定义泛型实体类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GuavaPo<T> {
private Integer id;
private T name;
}
测试类
import com.lyj.demo.pojo.GuavaPo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class)
public class GuavaTest {
@Test
public void getTypeTest() {
TypeToken typeToken = new TypeToken<ArrayList<GuavaPo<String>>>(){};
Type type = typeToken.getType();
System.out.println(type);
List<GuavaPo<String>> list = new ArrayList<>();
list.add(new GuavaPo<String>(1,"hello"));
list.add(new GuavaPo<String>(2,"world"));
String json = JSONArray.toJSONString(list);
System.out.println(json);
List<GuavaPo<String>> result1 = JSONArray.parseObject(json, list.getClass());
System.out.println(result1);
List<GuavaPo<String>> result2 = JSONArray.parseObject(json, type);
System.out.println(result2);
System.out.println(result2.get(0).getName().getClass());
}
}