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>()这格式?
谢谢你的回答!
都没答到点子,提高悬赏,请大家不要以字数多少来衡量一个答案。 展开
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>()这格式?
谢谢你的回答!
都没答到点子,提高悬赏,请大家不要以字数多少来衡量一个答案。 展开
展开全部
泛型说白了就是拆箱和装箱
例:
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>()这格式
例:
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>()这格式
展开全部
第一个问题
楼主要用Gen<?>这种形式声明时没有错误,意思是允许类型为Object及其子类。但是用了用Gen<?>这个通配符有个要求就是不能够再对他加入新的信息,只能够取得他当中的信息或是删除他当中的信息。
第二个问题
很简单,构造函数不需要返回类型,所以没有必要用用Gen<T>这种方法声明构造函数。这里的泛型定义和这个构造函数声明没有任何关系,只是定义了这个类中某些成员的类型。
希望我的回答让楼主满意:)
楼主要用Gen<?>这种形式声明时没有错误,意思是允许类型为Object及其子类。但是用了用Gen<?>这个通配符有个要求就是不能够再对他加入新的信息,只能够取得他当中的信息或是删除他当中的信息。
第二个问题
很简单,构造函数不需要返回类型,所以没有必要用用Gen<T>这种方法声明构造函数。这里的泛型定义和这个构造函数声明没有任何关系,只是定义了这个类中某些成员的类型。
希望我的回答让楼主满意:)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
T这个要是类才可以的。?会被编译器识别为不知道的类型,所以肯定过不了。不能这么用。
Gen<T>()这么写的目的是让编译器知道这个容器的类型,是装入什么东西的。而对于构造函数来说他是不用管这个的,构造函数只要给你开辟了一块内存就完事了,他可以完全不管你要保存的类型。
Gen<T>()这么写的目的是让编译器知道这个容器的类型,是装入什么东西的。而对于构造函数来说他是不用管这个的,构造函数只要给你开辟了一块内存就完事了,他可以完全不管你要保存的类型。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<>在以前的java版本里根本没有,你就当他不存在就行了,至于构造用他不知道你要表达什么意思,如果构造Gen(T)已经可以表达了还要你还用个Gen<T>来表达构造,岂不是java设计有问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询