最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java讓泛型實(shí)例化的方法

 更新時(shí)間:2020年07月13日 09:41:51   作者:夜空中最亮的蓋子  
這篇文章主要介紹了Java讓泛型實(shí)例化的方法,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

泛型對(duì)象可以實(shí)例化嗎?

不可以,T t=new T()是不可以的,編譯器會(huì)報(bào)錯(cuò)。由于泛型擦除,編譯器在編譯時(shí)無(wú)法確定泛型所對(duì)應(yīng)的真實(shí)類型

解決方法

使用反射新建實(shí)例

Type superclass = getClass().getGenericSuperclass();
ParameterizedType parameterizedType = null;
if (superclass instanceof ParameterizedType) {
  parameterizedType = (ParameterizedType) superclass;
  Type[] typeArray = parameterizedType.getActualTypeArguments();
  if (typeArray != null && typeArray.length > 0) {
   clazz = (Class<T>) typeArray[0];
        
  }
}

執(zhí)行結(jié)果

控制臺(tái)輸出

完整代碼

package com.learn.genericinstance;


import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class GenericInstanceLearn {
  public static void main(String[] args) throws InstantiationException, IllegalAccessException {
    UserDao userDao = new UserDao();
    System.out.println(userDao.toString());
  }
}


class Dao<T> {
  public Class<T> clazz;
  public T user;
  public Dao() throws IllegalAccessException, InstantiationException {
    Type superclass = getClass().getGenericSuperclass();
    ParameterizedType parameterizedType = null;
    if (superclass instanceof ParameterizedType) {
      parameterizedType = (ParameterizedType) superclass;
      Type[] typeArray = parameterizedType.getActualTypeArguments();
      if (typeArray != null && typeArray.length > 0) {
        clazz = (Class<T>) typeArray[0];
        user= clazz.newInstance();
      }
    }
  }

  @Override
  public String toString() {
    return "Dao{" +
        "user=" + user.toString() +
        '}';
  }
}

class UserDao extends Dao<User> {

  public UserDao() throws IllegalAccessException, InstantiationException {
  }

  @Override
  public String toString() {
    return super.toString();
  }
}

class User {
  String name;

  public User() {
    this.name = "default name";
  }

  @Override
  public String toString() {
    return "User{" +
        "name='" + name + '\'' +
        '}';
  }
}

以上就是Java讓泛型實(shí)例化的方法的詳細(xì)內(nèi)容,更多關(guān)于Java泛型實(shí)例化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringBoot找不到映射文件的處理方式

    SpringBoot找不到映射文件的處理方式

    這篇文章主要介紹了SpringBoot找不到映射文件的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Java內(nèi)部排序之插入排序與交換排序詳解

    Java內(nèi)部排序之插入排序與交換排序詳解

    這篇文章主要介紹了Java內(nèi)部排序之插入排序與交換排序詳解,排序是將任意序列重新排列按照關(guān)鍵字有序,排序根基存儲(chǔ)器的不同分為內(nèi)部排序、外部排序,排序根據(jù)關(guān)鍵字分為穩(wěn)定排序、不穩(wěn)定排序,需要的朋友可以參考下
    2023-12-12
  • Java中本地緩存的4種實(shí)現(xiàn)方式總結(jié)

    Java中本地緩存的4種實(shí)現(xiàn)方式總結(jié)

    這篇文章主要介紹了Java中本地緩存的4種實(shí)現(xiàn)方式,分別是基礎(chǔ)緩存實(shí)現(xiàn)、GuavaLoadingCache、SpringBoot整合Caffeine和JetCache,通過(guò)實(shí)例代碼,詳細(xì)講解了每種緩存技術(shù)的特點(diǎn)和使用方法,需要的朋友可以參考下
    2025-04-04
  • Java基礎(chǔ)學(xué)習(xí)之標(biāo)簽

    Java基礎(chǔ)學(xué)習(xí)之標(biāo)簽

    在Java中,標(biāo)簽必須在循環(huán)之前使用, 一個(gè)循環(huán)之中嵌套另一個(gè)循環(huán)的開關(guān),從多重嵌套中continue或break,該文詳細(xì)介紹了標(biāo)簽的相關(guān)知識(shí),對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們還很有幫助,需要的朋友可以參考下
    2021-05-05
  • MyBatis-Flex 邏輯刪除的用法小結(jié)

    MyBatis-Flex 邏輯刪除的用法小結(jié)

    本文主要介紹了MyBatis-Flex 邏輯刪除的用法小結(jié),主要介紹了@Column注解使用及UpdateChain工具類介紹,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • 詳解Java修飾符

    詳解Java修飾符

    Java語(yǔ)言提供了很多修飾符,主要分為以下兩類:訪問(wèn)修飾符;非訪問(wèn)修飾符。修飾符用來(lái)定義類、方法或者變量,通常放在語(yǔ)句的最前端。我們通過(guò)下面的例子來(lái)說(shuō)明,下面就跟小編一起來(lái)看下吧
    2016-12-12
  • Flutter實(shí)現(xiàn)文本組件、圖標(biāo)及按鈕組件的代碼

    Flutter實(shí)現(xiàn)文本組件、圖標(biāo)及按鈕組件的代碼

    這篇文章主要介紹了Flutter實(shí)現(xiàn)文本組件、圖標(biāo)及按鈕組件的代碼,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • Java實(shí)現(xiàn)將數(shù)組的元素用逗號(hào)連接的多種方法

    Java實(shí)現(xiàn)將數(shù)組的元素用逗號(hào)連接的多種方法

    在 Java 開發(fā)中,我們經(jīng)常需要將數(shù)組中的元素用逗號(hào)連接成一個(gè)字符串,這種需求在日志記錄、數(shù)據(jù)導(dǎo)出、API 響應(yīng)等場(chǎng)景中非常常見(jiàn),本文將詳細(xì)介紹如何在 Java 中實(shí)現(xiàn)這一功能,并提供多種簡(jiǎn)潔的方法和優(yōu)化建議,需要的朋友可以參考下
    2025-01-01
  • hibernate4快速入門實(shí)例詳解

    hibernate4快速入門實(shí)例詳解

    Hibernate是一個(gè)輕量級(jí)的ORMapping框架,本文重點(diǎn)給大家介紹hibernate4 入門實(shí)例詳細(xì),需要的朋友參考下吧
    2017-09-09
  • spring+maven實(shí)現(xiàn)郵件發(fā)送

    spring+maven實(shí)現(xiàn)郵件發(fā)送

    這篇文章主要為大家詳細(xì)介紹了spring+maven實(shí)現(xiàn)郵件發(fā)送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07

最新評(píng)論

牙克石市| 独山县| 丰台区| 荣昌县| 札达县| 巴南区| 开平市| 方城县| 固原市| 濉溪县| 孝昌县| 什邡市| 韶关市| 五指山市| 思茅市| 衡阳市| 荆门市| 乡城县| 湖南省| 盐源县| 新乡县| 辉县市| 海兴县| 澄迈县| 铅山县| 泉州市| 额济纳旗| 台江县| 林西县| 赤水市| 霍城县| 临武县| 汤原县| 嘉义县| 台湾省| 孝感市| 祁门县| 五华县| 万宁市| 凉城县| 尉犁县|