国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:2日期:2022-08-29 13:30:30

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

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

Java讓泛型實(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é)果

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

控制臺(tái)輸出

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

完整代碼

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)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 健康| 衡水市| 丽水市| 通化市| 长海县| 石屏县| 安乡县| 迁安市| 卢龙县| 宜春市| 沙田区| 达拉特旗| 平顺县| 乐陵市| 桦甸市| 麻阳| 光山县| 德格县| 宝鸡市| 裕民县| 尚志市| 光泽县| 鲜城| 景宁| 纳雍县| 当涂县| 新宁县| 武山县| 无棣县| 榆中县| 肇州县| 桦川县| 定西市| 望城县| 会东县| 中西区| 安多县| 云浮市| 子洲县| 西青区| 邯郸县|