`
youyu4
  • 浏览: 440338 次
社区版块
存档分类
最新评论

java泛型中<?>和<T>有什么区别?

    博客分类:
  • java
 
阅读更多

public static void printColl(ArrayList<?> al){
                Iterator<?> it = al.iterator();
                while(it.hasNext())
                {
                        System.out.println(it.next().toString());
                }
?和T都表示不确定的类型  但如果是T的话 函数里面可以对T进行操作 比如while里面可以这样写
T t = it.next();
System.out.println(t);

 

 

 

 

 

T自定义泛型和?通配符泛型
1.在整个类中只有一处使用了泛型,使用时注意加了泛型了参数不能调用与参数类型有关的方法比如“+”,比如打印出任意参数化类型集合中的所有内容,就适合用通配符泛型<?>
public static void printCollecton(Collection <?> collection)
{
for(Object obj: collection)
{
System.out.println(obj);
}
}


2.当一个类型变脸用来表达两个参数之间或者参数与返回值之间的关系时,即统一各类型变量在方法签名的两处被使用,或者类型变量在方法体代码中也被使用而不仅仅在签名的时候使用,这是应该用自定义泛型<T>。泛型方可以调用一些时间类型的方法。比如集合的add方法。
public static <T> T autoConvertType(T obj)
{
     return(T)obj;
}

 

 

 

 

 

 

泛型三种:
          [1]ArrayList<T> al=new ArrayList<T>();指定集合元素只能是T类型
          [2]ArrayList<?> al=new ArrayList<?>();集合元素可以是任意类型,这种没有意义,一般是方法中,只是为了说明用法
          [3]ArrayList<? extends E> al=new ArrayList<? extends E>();
            泛型的限定:
               ? extends E:接收E类型或者E的子类型。
               ?super E:接收E类型或者E的父类型。
分享到:
评论

相关推荐

    Java中List<? extends T>与List<? super T>的区别(值得珍藏)

    在Java中,List&lt;T&gt;、List&lt;? extends T&gt;和List&lt;? super T&gt;是泛型的不同使用形式,它们在类型约束和操作上有所不同。 1. List&lt;? extends T&gt; - `? extends T` 是类型上界的表示,意味着列表中的元素可以是T类型或者是...

    Java泛型的用法及T.class的获取过程解析

    Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析。 一、泛型的基本概念 泛型是Java 5中...

    关于java基础的泛型的练习

    Java泛型是Java SE 5.0引入的一个重要特性,它极大地增强了代码的类型安全性和可读性。泛型在编程中的应用广泛,特别是在集合框架中,使得我们可以在编译时就检查类型,避免了不必要的类型转换,并且提高了代码的...

    Java泛型三篇文章,让你彻底理解泛型(super ,extend等区别)

    在 Java 泛型中,extends 和 super 是两个重要的关键字,它们分别用于限定类型的上界和下界。 extends 用于限定类型的上界,表示参数化类型可能是 T 或 T 的子类。例如: List&lt;? extends Fruit&gt; flist = new ...

    Json与实体相互转换,支持IList泛型

    Json转换为实体;Json转换为IList&lt;T&gt;;实体转换为Json;IList&lt;T&gt;转换为Json;

    java泛型深入.pdf

    Java泛型还支持带有通配符的泛型类型,例如`List&lt;?&gt;`表示未知类型的`List`,这是不可变的。`List&lt;? extends T&gt;`表示`T`类型或其子类型的`List`,而`List&lt;? super T&gt;`表示`T`类型或其父类型的`List`。 使用泛型时,...

    Java泛型_Java中的泛型结构_

    Java泛型是Java编程语言中一个强大的特性,它允许在定义类、接口和方法时使用类型参数,从而实现参数化类型。泛型的主要目标是提高代码的类型安全性和重用性,减少类型转换的麻烦,并在编译时捕获可能的类型错误。...

    java泛型初探

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入,极大地增强了类型安全性和代码可读性。泛型允许我们在类、接口和方法中使用类型参数,使得这些构造能够处理多种数据类型,而无需进行...

    Java中的泛型

    泛型是Java SE 5.0中引入的一项新特性,它允许在程序设计中使用参数化类型,从而实现类型安全的集合类和其他容器类。在使用泛型之前,Java程序员通常依赖于Object类型作为通用容器的数据类型,然后在运行时进行显式...

    Java的泛型是什么?怎么用.pdf

    Java中的泛型是一种在编译时期提供类型安全检查的机制,它可以确保程序在运行时不会出现类型错误。通过使用泛型,开发人员能够编写出更加通用和可重用的代码。 #### 二、类型参数 类型参数是使用单个字符(例如 `T...

    java 泛型类的类型识别示例

    4. **利用`Class&lt;T&gt;`作为泛型约束**:有时候,我们可以在泛型类中使用`Class&lt;T&gt;`作为参数或字段,这样可以在运行时获取类型信息。例如: ```java public class MyClass&lt;T&gt; { private final Class&lt;T&gt; clazz; ...

    java 泛型接口示例

    综上所述,Java泛型接口提供了强大的类型安全性,允许我们在接口中定义通用的方法,并在实现时指定具体的类型。通过类型参数约束、通配符、类型擦除和类型推断等机制,我们可以灵活地设计和使用泛型接口,提高代码的...

    1.泛型类 、通配符的使用、通配符的上限和下限 编写泛型类Stack<E>,该类中定义一个成员变量和如下方法:

    在Java中,泛型是一种使代码更加灵活、重用性更强且类型安全的技术。通过使用泛型,我们可以定义类型参数化的类或方法,从而避免了代码重复并且可以在运行时提供类型检查。 #### 2. 泛型类Stack&lt;E&gt; 在这个实验中,...

    java泛型例子

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入,极大地增强了类型安全性和代码可读性。泛型允许我们在编写代码时指定容器(如集合)可以存储的数据类型,从而在编译阶段就能捕获类型...

    java泛型BaseDao与BaseService

    总的来说,Java泛型BaseDao与BaseService是企业级Java开发中的重要概念,它们结合了泛型的优势,为数据访问和业务处理提供了灵活、安全的抽象基础。理解并熟练运用这些技术,将使你的Java开发能力更上一层楼。

    Java泛型总结(2)进阶篇

    Java泛型是Java SE 5.0引入的一个重要特性,极大地提高了代码的类型安全性和重用性。在本文中,我们将深入探讨Java泛型的进阶概念,包括通配符、边界、类型擦除以及在实际开发中的应用。 1. 通配符 通配符在Java...

    java 泛型入门 实例

    - **泛型方法**:在方法签名中使用类型参数,例如`public &lt;T&gt; T max(List&lt;T&gt; list)`,这个方法可以找出列表中的最大值,而不论列表元素是什么类型。 - **通配符**:`?`通配符用于表示任意类型。例如,`List&lt;?&gt;`...

    Java泛型&lt;T&gt; T与T的使用方法详解

    在Java中,&lt;T&gt; T和T的区别是,T是Type的首字母缩写:&lt;T&gt; T表示“返回值”是一个泛型,传入什么类型,就返回什么类型;而单独的“T”表示限制传入的参数类型。&lt;T&gt; T的用法是,表示返回值T的类型是泛型,T是一个占位符...

Global site tag (gtag.js) - Google Analytics