java 类 方法 带泛型_Java:带有类泛型的方法类型参数的工厂

初步情况:

我为其他一些通用接口A< T>创建了一个工厂接口:

public interface Factory> {

public X create();

}

问题描述:

现在我遇到的问题是我需要为每个类型T实例化一个工厂.这变得非常不方便,特别是如果某些代码想要从A< T>进行一些转换.对于A< T2>,其中T2是一些先前未知的类型或者存在许多不同的T2,我不想为每种特殊情况指定数百个工厂.

目标:

我想将类型T作为create方法的泛型参数传递.这样我得到的东西(注意,不正确的Java :-)):

public interface Factory> {

public X create();

}

Factory的实现可能只需执行以下操作:

public class Factory4B implements Factory {

public X create() {

return new B();

}

}

将以上版本的接口写下来会给出create的返回值的错误消息:

The type X is not generic; it cannot be parameterized with argument

问题:

有没有办法实现这样的通用工厂,还是我需要使用完全不同的方法?我希望能够在类级别指定X,这样我就可以轻松地实例化X.我不想为每个参数T创建一个Factory

感谢您抽出时间提前回答这个问题.

根据以下评论重新思考问题(27.4.15)

根据下面的评论重新思考问题,我的问题是不可能实现的,因为不可能保证通用参数仍然存在于A< T>的子类中,或者换句话说:没有泛型的继承参数.

例:

>让我们想一下从A< String>派生的C类.

>无法创建C因为C没有类型参数.

>因此,不存在可能创建C< Integer>的一般工厂.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值