日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

springboot中java泛型使用

發(fā)布時(shí)間:2025/4/17 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot中java泛型使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

java中泛型的使用非常普及,泛型在項(xiàng)目中的使用往往能達(dá)到事半功倍的效果,基礎(chǔ)知識(shí)就不普及了,網(wǎng)上太多了,主要介紹幾種典型的用法。

1.泛型類的使用

1)創(chuàng)建一個(gè)簡(jiǎn)單的的泛型類

泛型類的標(biāo)志就是類后面通常以<T>為標(biāo)記,在用該類創(chuàng)建對(duì)象的時(shí)候,T傳遞的類型是什么,給data泛型變量賦值就是什么類型。

//這里@Builder注解的用途是:在創(chuàng)建該類的對(duì)象時(shí),可以用類名.builder.屬性名1(值1).屬性名2(值2).build方式構(gòu)建,替換new創(chuàng)建對(duì)象的方式 @Builder @Data @NoArgsConstructor @AllArgsConstructor public class ApiResponse<T> {private String code;private String message;private T data; } 2)使用單元測(cè)試框架測(cè)試一把。 @SpringBootTest @Slf4j class WebapitestApplicationTests {@Testvoid contextLoads() {/*** ApiResponse.<String>builder()中的<String>代表給T傳遞String類型,* 同時(shí)給后面的data賦值時(shí)要傳遞String類型,如果給data傳遞其他類型會(huì)提示報(bào)錯(cuò)。* 理論上可以給T傳遞任意類型(Object的子類)*/ApiResponse<String> build = ApiResponse.<String>builder().code("200").message("成功").data("aaaaaaaaaaaa").build();log.info("輸出日志 build:{}",build);/*** ApiResponse.<Integer>builder()中的<Integer>代表給T傳遞Integer類型,* 同時(shí)給后面的data賦值時(shí)要傳遞Integer類型,如果給data傳遞其他類型會(huì)提示報(bào)錯(cuò)。*/ApiResponse<Integer> build1 = ApiResponse.<Integer>builder().code("500").message("失敗").data(250).build();log.info("輸出日志 build1:{}",build1);} } 3)輸出結(jié)果: demo.WebapitestApplicationTests : 輸出日志 build:ApiResponse(code=200, message=成功, data=aaaaaaaaaaaa) demo.WebapitestApplicationTests : 輸出日志 build1:ApiResponse(code=500, message=失敗, data=250)

2.泛型靜態(tài)方式的使用(無(wú)返回值)

1)在上面的泛型類中增加一個(gè)無(wú)返回值的泛型靜態(tài)方法,代碼如下。

我們知道靜態(tài)方法的調(diào)用不需要?jiǎng)?chuàng)建對(duì)象,通過(guò)類.靜態(tài)方法直接調(diào)用,所以ApiResponse<T>這個(gè)泛型類中的T對(duì)靜態(tài)方法不起作用,它只對(duì)這個(gè)類中的非靜態(tài)成員變量起作用。

@Builder @Data @NoArgsConstructor @AllArgsConstructor public class ApiResponse<T> {private String code;private String message;private T data;/*** 該靜態(tài)方法用來(lái)輸出外部調(diào)用傳入的實(shí)參對(duì)應(yīng)的數(shù)據(jù)類型* 格式:在返回值void前面加泛型<T>用來(lái)接收調(diào)用方傳遞的數(shù)據(jù)類型,同時(shí)* 傳遞的實(shí)參t一定要屬于這個(gè)類型 */public static <T> void testStaticMethod(T t){System.out.println(t.getClass().getTypeName());} } 2)調(diào)用靜態(tài)方法 @SpringBootTest @Slf4j class WebapitestApplicationTests {@Testvoid contextLoads() {/*** 調(diào)用靜態(tài)方法* 注意:* 1、ApiResponse.<String>中的String代表調(diào)用時(shí)希望傳入的類型,* 同時(shí)方法后面的實(shí)參"hello-world"一定要是這個(gè)類型,否則報(bào)錯(cuò)。* 2、testStaticMethod 雖然是類 ApiResponse<T> 中的方法,但是該* 靜態(tài)方法中的<T>并不是ApiResponse<T>中的T,這點(diǎn)要清楚。*/ApiResponse.<String> testStaticMethod("hello-world");ApiResponse.<Integer> testStaticMethod(888);} } 3)輸出結(jié)果: java.lang.String java.lang.Integer

2.泛型靜態(tài)方式的使用(有返回值)

1)在上面的泛型類中再增加一個(gè)有返回值的泛型靜態(tài)方法,代碼如下。

同樣,ApiResponse<T>這個(gè)泛型類中的T對(duì)靜態(tài)方法不起作用,它只對(duì)這個(gè)類中的非靜態(tài)成員變量起作用。

@Builder @Data @NoArgsConstructor @AllArgsConstructor public class ApiResponse<T> {private String code;private String message;private T data;/*** 該靜態(tài)方法根據(jù)調(diào)用方傳入的T類型的實(shí)參t,返回一個(gè)ApiResponse<T>對(duì)象* 實(shí)現(xiàn)原理:外部傳入一個(gè)T數(shù)據(jù)類型的實(shí)參t,方法體內(nèi)根據(jù)這個(gè)T類型,創(chuàng)建* 一個(gè)ApiResponse<T>對(duì)象,并進(jìn)行初始化,對(duì)data這個(gè)泛型變量賦予傳入的* T類型的實(shí)參t,最后返回該對(duì)象* */public static <T> ApiResponse<T> testStaticMethodReturn(T t){ApiResponse<T> listApiResponse = ApiResponse.<T>builder().code("503").message("服務(wù)失敗").data(t).build();return listApiResponse;} } 2)調(diào)用該靜態(tài)方法 @SpringBootTest @Slf4j class WebapitestApplicationTests {@Testvoid contextLoads() {List<String> stringList = new ArrayList<String>();stringList.add("username");stringList.add("password");stringList.add("age");stringList.add("education");/*** 調(diào)用該靜態(tài)方法時(shí),泛型T傳入List類型,并傳遞實(shí)參stringList,* 最后方法返回ApiResponse<List>對(duì)象并打印出來(lái)。*/ApiResponse<List> listApiResponse = ApiResponse.<List>testStaticMethodReturn(stringList);log.info("打印ApiResponse值:{}",listApiResponse);} } 3)輸出結(jié)果: demo.WebapitestApplicationTests : 打印ApiResponse值:ApiResponse(code=503, message=服務(wù)失敗, data=[username, password, age, education])

總結(jié)

以上是生活随笔為你收集整理的springboot中java泛型使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。