java 泛型 T的类型

我定义了classA<T>{}classB{}Bb=newB();希望产生这样的效果A<B>a=newA<B>();但是要让上面这条语句具有普遍适用性,我希望改成下面这样... 我定义了

class A<T>{}
class B{}
B b = new B();
希望产生这样的效果
A<B> a = new A<B>();

但是要让上面这条语句具有普遍适用性,我希望改成下面这样

A<b.getClass()> a = new A<b.getClass()>();
即对任何类型(B、C、D……),上面的语句都能成立

实际中,在b.getClass()中却发生错误,不能调用getClass()函数。

请问应该如何解决?

非常感谢!
展开
 我来答
101页报告
推荐于2017-10-11 · TA获得超过1809个赞
知道小有建树答主
回答量:768
采纳率:69%
帮助的人:164万
展开全部
"<T>"可以代表任意类型的。
解释: “<T>”是泛型的默认值,可以被任意类型所代替,如:
List<String> list = new ArayList<String>();这个就定义了一个String类型的数组,那么T的类型就是字符串。
List<T> list = new ArayList<T>();之后也有可以:list.add("StringBatch");
这个时候T的类型也是String。也就是说T是动态的,可以被任意指定类型。
依土天羽
2013-11-19 · TA获得超过289个赞
知道小有建树答主
回答量:337
采纳率:100%
帮助的人:401万
展开全部

T要求的是定义的类型,不能是类的实例,你调用getClass方法,会返回一个Class类的实例,当让会报错了。

另外

class A<T>{}

这种模式本身就支持 A<B>,A<C>,A<D>,A<...>等等等,你为什么要改呢?

更多追问追答
追问
在不同的源文件中,有如下实例:
B b = new B();
C b = new C();
我希望让这一条语句可以分别实现上述两个的泛型,而不用改代码,类似于
A a = new A();

在第一个源文件中实现的就是B类型
在第二个源文件中实现的就是C类型
请问应如何修改?
getClass()返回的A的类型类,不等于A的类型,是吗?
那么我应该用什么函数?
追答
getClass()试返回一个Class类的实例,然后该实例是用来描述B类的,也就是说,这里直接用
A a = new A();就行
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7d2580b
2013-11-19 · TA获得超过118个赞
知道答主
回答量:88
采纳率:50%
帮助的人:12.4万
展开全部
A这个类是集合还是什么?还有,不可以用泛型构造对象,这样是错误的。泛型,即在程序编码中一些包含参数的类。其参数可以代表类或对象等等。好好想想你理解的和你老师要求的是不是有偏差
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
书酒天涯
2015-11-10 · TA获得超过313个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:41.4万
展开全部
既然被称作泛型,这个T就不是特指某一类型。
这个T用来代表所有的类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zqmemory123
2015-10-16 · 超过34用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:56.3万
展开全部
泛型就是泛指任何类型,T可以是String、Integer或者任何类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式