泛型方法里面创建类型实例

有帮助的话对Micro极微完美女装品牌店淘宝店支持支持包      

我们知道泛型代码在运行时是没有类型信息,擦除丢失了类型信息使得泛型代码执行过程中缺少执行某些操作的能力(任何在运行时需要知道确切类型信息的操作都无法执行,补偿只是在边界也就是传出去的时候才进行类型转换)。既然无法知道类型信息就无法创建类的实例,那我们应该怎么办。

       我所知道的有三种方式,而我则将给大家用代码展示其中的一种情况:

       1、创建实例工厂为其返回类型信息。

        2、创建显示的工厂为其返回类型信息

//这个时候t是没有类型信息的
class Foo<T>{
    T t;
}
//下面的例子中使得t具有Integer类型
class Foo<T>{
    T t;
    public <F> Foo(F fa){
        t= fa.creat();
    }
}

......
Integer creat(){
    return new Integer(0);
}

        3、模板方法设计模式

我们在不改变代码整体架构的基础上,只需要在赋予类型信息的时候进行编码即可。

//在这个代码运行过程中t也是没有类型信息的,那我们通过构造方法初始化时为泛型t进行赋予。
public abstract class GenericGreate<T> {
    T t;
    GenericGreate(){
        t= create();
    }
    abstract T create();
}
//下面是我们在市级中用到的类,让其继承GenericGreate,并在子类中对create方法进行重写
public class Creator extends GenericGreate {
    @Override
    Object create() {
        return new String();
    }
    public void f(){
        System.out.println(super.t.getClass().getName());
    }

    public static void main(String[] args) {
        new Creator().f();
    }
}
//经过第二步的操作我们就为t赋予String类型的类型信息,t就具有String的操作
控制台打印结果
============================================================
java.lang.String

经过上面的学习我们应该清楚的知道泛型代码在没有类型信息的时候我们应该怎么人为的为其赋予想要的类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子鞋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值