JAVA泛型类定义问题 50

代码如下。publicclassGen<T>{privateTobject;publicGen(Tobject){this.object=object;}publicTg... 代码如下。
public class Gen<T> {

private T object;

public Gen ( T object ) {

this.object = object;

}

public T getObject() {

return object;

}

public static void main(String[] args){
Gen<String> str = new Gen<String>("[answer]");
Gen<Integer> intg = new Gen<Integer> (42);
System.out.println(str.getObject() + "=" +intg.getObject());
}
}
===============================================================
问题一:为什么类名不可以用Gen<?>
问题二:为什么构造函数名是Gen()而不是Gen<T>()这格式?

谢谢你的回答!
都没答到点子,提高悬赏,请大家不要以字数多少来衡量一个答案。
展开
 我来答
jy02231251
2009-07-15 · 超过10用户采纳过TA的回答
知道答主
回答量:40
采纳率:0%
帮助的人:27万
展开全部
泛型说白了就是拆箱和装箱
例:
ArrayList<Student>array=new ArrayList();//此处试用了泛型
for(int i=0;i<array.size();i++){
Student student=array.get(i);//此处就不需要强制类型转换因为泛型已经自动帮你转换
}
//--------不加泛型---------
ArrayList array=new ArrayList();//此处试用了泛型
for(int i=0;i<array.size();i++){
Student student=(Student)array.get(i);//就需要强制类型转换
}
所以:类名和构造方法不需要拆箱和装箱,也就是强制类型转换,因此
类名不可以用Gen<?>
构造函数名是Gen()而不是Gen<T>()这格式
宇帅007
2009-07-15 · TA获得超过1030个赞
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:240万
展开全部
第一个问题
楼主要用Gen<?>这种形式声明时没有错误,意思是允许类型为Object及其子类。但是用了用Gen<?>这个通配符有个要求就是不能够再对他加入新的信息,只能够取得他当中的信息或是删除他当中的信息。
第二个问题
很简单,构造函数不需要返回类型,所以没有必要用用Gen<T>这种方法声明构造函数。这里的泛型定义和这个构造函数声明没有任何关系,只是定义了这个类中某些成员的类型。
希望我的回答让楼主满意:)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
daay1986
2009-07-16 · TA获得超过6018个赞
知道大有可为答主
回答量:2208
采纳率:0%
帮助的人:1472万
展开全部
T这个要是类才可以的。?会被编译器识别为不知道的类型,所以肯定过不了。不能这么用。
Gen<T>()这么写的目的是让编译器知道这个容器的类型,是装入什么东西的。而对于构造函数来说他是不用管这个的,构造函数只要给你开辟了一块内存就完事了,他可以完全不管你要保存的类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c6719fe
2009-07-20 · TA获得超过1366个赞
知道小有建树答主
回答量:473
采纳率:100%
帮助的人:0
展开全部
<>在以前的java版本里根本没有,你就当他不存在就行了,至于构造用他不知道你要表达什么意思,如果构造Gen(T)已经可以表达了还要你还用个Gen<T>来表达构造,岂不是java设计有问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式