JAVA泛型只能用引用类型_Java泛型和设计模式:不参数化对泛型类型的引用总是一件坏事吗?...

这个问题部分与我上次的

question有关.

我有一个表示泛型对象集合的泛型类:

public interface MyObject{}

public interface MyCollecion {

public foo(MyObject obj)

}

在我的设计中,这些对象集合由客户端类(我们称之为CollectionBuilder)通过抽象类方法构造:

public interface AbstractCollectionFactory {

public abstract MyCollection> createCollection(String collectionType);

}

通用集合应该以这种方式构造:

public class CollectionBuilder{

AbstractCollectionFactory f;

public void buildDoubleCollection(){

MyCollection> c = f.createCell("MyType");

}

public void buildIntegerCollection(){...}

}

好的.从这里一切都好. CollectionBuilder知道要指定的通用具体类型(在这种情况下为Double)并且可以正确构建.我可以编译它没有任何警告,所有应该工作正常.

现在我有一个与泛型和我的程序设计有关的问题.

我的应用程序中有另一个类需要使用CollectionBuilder构建的集合(让我们调用这个类UserClass).

UserClass:

>不需要知道其集合的特定具体类型(MyCollection< MyObject< Double>>或MyCollection< MyObject< Integer>>).

>对这些集合执行一些操作,调用MyCollection接口中定义的一些方法.

>我不想为它添加泛型类型.

在描述的情况下,是不是一个坏主意不参数化通用类MyCollection insed UserClass?

public UserClass{

MyCollection a; //warning

MyCollection> b; //no warning

public method(MyObject o){ //warning

a.foo(b); //compile

}

public method2(MyObject> o){

b.foo(o); //error do not compile

}

}

如果我没有指定泛型参数,Java编译器总是会发出警告.无论如何从UserClass里面我不知道具体参数(我想不知道它)甚至用“?”声明它不允许我在MyCollection上调用方法foo.

所以问题是:

>不参数化对泛型类型的引用总是一件坏事吗?

>如果1处的答案为否,这是不是这样做的正确情况?

>如果1处的答案为YES,如何在不知道其泛型类型的情况下从UserClass中使用MyCollection方法?

>我的设计不好吗?

我希望已经清楚了.我几天都在努力解决这个问题,我不知道.请帮我.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值