`
snoopy7713
  • 浏览: 1148808 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

一个例子全部说明java泛型中的K,V,T,E,?,object的意思及其用法

    博客分类:
  • java
阅读更多

1.意思
   jdk中的K,V,T,E等泛型名称很多人以为是固定写法,其实这些名称是可以改的,比如改成zhangsan,lisi都可以,jdk为了容易看懂,所以用K表示键,V表示值,T表示type类型,E表示enum枚举,其实这四个都只是符号,都是表示泛型名称,下面的例子的T全部可以换成E,也可以换成K,V,zhangsan,都没关系。
   ? 表示不确定的类型
   Object java中所有类的父类。
2.使用方法
  

Java代码  收藏代码
  1. import java.util.ArrayList;  
  2. import java.util.HashMap;  
  3. import java.util.List;  
  4. import java.util.Map;  
  5. //T1,T2都是随便定义的东西,注意1:他们不会关联到其他类,只是在本类中通用,只是告诉我们new的时候要加入泛型  
  6. public class Test<T1, T2> {  
  7.     public static void main(String[] args) {  
  8.         System.out.println(new Test().getaa());  
  9.         new Test<String, String> ().getbb("");  
  10.         new Test().getcc(Test.class);  
  11.         //注意下6:面这个HashMap的括号里面不能是T,E,T1,T2等不确定的东西,但可以是?  
  12.         HashMap<Object, String> map = new HashMap<Object, String>();  
  13.         List<?> list = new ArrayList<String>();  
  14.     }  
  15.   
  16.     T2 getaa() {  
  17.         //注意2:T2将自动转型为String,这个不需要去担心  
  18.         return (T2) "few";  
  19.   
  20.     }  
  21.   
  22.     public <T> void getbb(T x) {  
  23.         //注意3:Class<T>前面缺少<T>将编译错误  
  24.         System.out.println(x.getClass().getName());  
  25.     }  
  26.   
  27.     public <T> Class<?>  getcc(Class<T> a) {  
  28.         //getcc前面的Class<T>前面缺少<T>将编译错误,注意4:Class<?>里面的问号可以换成T  
  29.         System.out.println(a.getClass().getName());  
  30.         //注意5:参数里面的Class<T>最大的好处是如果方法里面定义了泛型,可以自动获取类型值,比如如下的List<T>可以自动获取到a的类型,不必强调死  
  31.         List<T> aa=new ArrayList<T>();  
  32.         System.out.println(aa);  
  33.         return a;  
  34.     }  

分享到:
评论

相关推荐

    java 泛型方法使用示例

    下面我们将深入探讨Java泛型方法的概念、语法以及使用示例。 **一、泛型方法概念** 泛型方法是一种具有类型参数的方法,这些类型参数可以在方法声明时指定,并在方法体内部使用。与类的泛型类似,它们提供了编译时...

    一看就懂 详解JAVA泛型通配符T,E,K,V区别

    在Java中,我们经常会看到一些通配符,例如T、E、K、V等,这些通配符都是Java泛型的通配符,它们的区别在于它们的名称和使用场景。 * T (type):表示不确定的Java类型,通常用作泛型类型参数。 * E (element):代表...

    java 泛型类的类型识别示例

    在这个例子中,`T`是类型参数,代表一个未知的类型。在实例化泛型类时,我们可以指定`T`的具体类型,例如`MyClass&lt;String&gt;`或`MyClass&lt;Integer&gt;`。 然而,由于类型擦除,我们无法直接在运行时获取`T`的类型信息。...

    面试必须资料java泛型攻略、

    然而,在`inspectCollection`方法中,我们期望遍历的元素都是`String`类型,但实际上集合中还包含了一个`Integer`对象。因此,在运行时,当我们尝试将一个非`String`对象转换为`String`时,就会抛出`...

    java 泛型的使用 详细讲解

    泛型的基本语法是在类、接口或者方法的定义中使用尖括号`&lt;&gt;`包含一个或多个类型参数。 例如,定义一个泛型类: ```java public class Generic&lt;T&gt; { private T key; public Generic(T key) { this.key = key; ...

    SUN公司Java泛型编程文档

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入。这个特性极大地提高了代码的类型安全性和可读性,减少了在运行时出现ClassCastException的可能性。SUN公司的Java泛型编程文档,包括...

    java泛型指南 经典

    ### Java泛型指南经典知识点解析 #### 一、引言 Java 1.5 版本引入了一系列重要的语言特性,其中“泛型”是其中一项关键特性。泛型的引入极大地提高了 Java 语言的类型安全性和代码重用性。本文档旨在深入探讨 ...

    Java1.5泛型指南中文版

    在这个例子中,`T`是一个类型参数,代表任何类型的对象。当创建`Box`的实例时,需要指定`T`的具体类型,如`Box&lt;String&gt;`或`Box&lt;Integer&gt;`。 #### 使用泛型类 使用泛型类非常简单,只需要在创建实例时指定类型参数...

    Java泛型编程最全总结

    在这个例子中,`&lt;T&gt;`定义了一个类型参数,方法可以接受任何类型的`List`,并在方法体内操作`T`类型的数据,而无需进行显式类型转换。 Java泛型还有通配符,用于表示对类型的限制。例如,`?`表示任何类型,`? ...

    Java泛型实例

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着Java SE 5.0的发布而引入,极大地增强了代码的类型安全性和重用性。泛型允许我们在编写类、接口和方法时指定参数化类型,使得代码在编译时就能进行类型检查...

    JAVA泛型笔记.pdf

    "JAVA泛型笔记.pdf" Java 泛型(Generic)是 Java 5 中引入的一种机制,它允许开发者在编写类、接口和方法时指定类型参数,以提高代码的灵活性和可重用性。泛型的主要特点是可以在编译期检查类型的正确性,避免了...

    JAVA泛型详解[参考].pdf

    在传统的Java编程中,如果我们要创建一个能够处理多种类型的数据结构,如上面例子中的坐标类`Position`,我们通常会使用`Object`作为数据存储类型,然后在使用这些数据时进行强制类型转换。然而,这种做法存在潜在的...

    JAVA泛型教程(帮你解决学习泛型的苦恼)

    Java泛型是Java语言的一个重要特性,它允许在类、接口和方法中声明类型参数,从而提高了代码的复用性和安全性。这个特性自Java 5引入以来,极大地改善了Java的类型系统,降低了类型转换异常的风险。 1. **使用泛型...

    JVM如何理解Java泛型类.doc

    - 如果有多个限定,如`&lt;T extends XClass1 & XClass2&gt;`,则使用第一个边界类型`XClass1`作为原始类型。 2. **类型擦除示例**: 对于上面给出的`Pair&lt;T&gt;`类,经过类型擦除之后,它将变为: ```java public class...

    Java泛型编程快速入门

    本文将详细介绍Java泛型的基本概念、使用方法以及其带来的好处。 #### 二、Java泛型概述 **1. 什么是Java泛型** Java泛型是一种允许在编译时检查类型安全,并且所有的强制转换都是自动和隐式的特性。它可以帮助...

    java泛型编程

    在这个例子中,`max`方法接受两个参数,并返回其中较大的一个。类型参数`T`需要实现`Comparable`接口。 #### 四、类型擦除 类型擦除是指Java编译器在编译期间删除了程序中所有的类型参数信息,并将它们替换为对应...

    java反射与泛型综合例子

    在这个示例中,`createAndInvoke`方法接受一个类名字符串、一个方法名字符串和任意数量的参数,然后使用反射创建该类的实例,并调用指定的方法。`getTypes`方法用于获取参数的类型数组,这是为了匹配`getMethod`方法...

Global site tag (gtag.js) - Google Analytics