泛型参数

一只红烧虾 2020-05-10 10:52:23
泛型参数的作用是什么?直接用objet类型的参数不行吗?
...全文
2654 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vicali 2020-11-21
  • 打赏
  • 举报
回复
泛型本身就是用来解决Object向下转型问题的。 当你使用Object来接收对象时,你会发现你无法直接使用Object对象来访问内容,你需要向下转型才可以。
James-Blackhu 2020-08-16
  • 打赏
  • 举报
回复
泛型能避免类型强转带来的麻烦,将运行期的ClasscastException,在编译期就显现出来。

Collection coll = new ArrayList();
coll.add("abc");
coll.add("itcast");
coll.add(5);//由于集合没有做任何限定,任何类型都可以向其中存放
Iterator it = coll.iterator();
while(it.hasNext()){
//需要打印每个字符串的长度,就要把迭代出来的对象转成String类型
String str = (String) it.next();
System.out.println(str.length());
}
public static void main(String[] args) {
Collection<String> list = new ArrayList<String>();
list.add("itheima");
list.add("itcast");
// list.add(666);//当集合明确类型后,存放类型不一致就会编译报错
// 集合已经明确具体存放的元素类型,那么在使用迭代器的时候,迭代器也同样会知道具体遍历
元素类型
Iterator<String> it = list.iterator();
while(it.hasNext()){
String str = it.next();
//当使用Iterator<String>控制元素类型后,就不需要强转了。获取到的元素直接就是
String类型
System.out.println(str.length());
}
}
丿Mars丨巛恋 2020-08-12
  • 打赏
  • 举报
回复
泛型的实质是类型檫除,在编译期就会自动转换为你传入的类型,这是简化了重载的学法,使用object是可以,但是这样相对浪费的空间比较大
捏造的信仰 2020-05-14
  • 打赏
  • 举报
回复
泛型参数的作用就是限制参数类型,例如
public <T> void function(T t1, T t2) {
...
}

这个方法就限制了两个参数必须是相同类型,Object 做不到这样的限制。
kse_music 2020-05-11
  • 打赏
  • 举报
回复
泛型其实就是让错误今早在编译期暴露的,而且泛型在运行时也是将类型擦除的,为了就是向前兼容。其实你用反射的话就可以绕开泛型的检测,但是你在运行时就需要写 instanceof 之类的判断,
qybao 2020-05-11
  • 打赏
  • 举报
回复
直接用object类型,你还要判断实际引用的类型是否一致,还要进行类型强行转换等等,代码繁琐。
比如,对比一下test1方法和test2方法

class AA extends A {
public void action() {
System.out.println("AA");
}
}
public class A {
public void action() {
System.out.println("A");
}

public static <T extends A> void test1(T t) { //T是A的子类泛型
t.action(); //代码简洁
}

public static void test2(Object t) { //用Object代码繁琐
if (t instanceof A) { //判断类型
((A)t).action(); //强行转换
}
}

public static void main(String[] args) {
A a = new AA();
test1(a);
test2(a);
}
}
android_cai_niao 2020-05-11
  • 打赏
  • 举报
回复
使用泛型参数可以保证类型一致啊,跟你使用集合一样,你想想使用泛型集合的好处是什么?是不是你集合指定泛型为String,存的时候只能存String,取的时候不需要强转也是String。或者你可以举一个接收泛型参数的方法,我看看能不能根据具体方法给你解释。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧