`
韩悠悠
  • 浏览: 841932 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

泛型讨论------类型参数推断

 
阅读更多

我们最大的遗憾也许就是使用了泛型以后,在程序中加入了更多的代码。下面看一个工具类,它包含各种各样的static方法,专门用来创建各种各样的容器对象。

 

public class New {
  public static <K,V> Map<K,V> map() {
    return new HashMap<K,V>();
  }
  public static <T> List<T> list() {
    return new ArrayList<T>();
  }
  public static <T> LinkedList<T> lList() {
    return new LinkedList<T>();
  }
  public static <T> Set<T> set() {
    return new HashSet<T>();
  }	
  public static <T> Queue<T> queue() {
    return new LinkedList<T>();
  }
    public static void main(String[] args) {
    Map<String, List<String>> sls = New.map();
    List<String> ls = New.list();
    LinkedList<String> lls = New.lList();
    Set<String> ss = New.set();
    Queue<String> qs = New.queue();
  }
} 

 

 

需要说明:

 

类型推断只对赋值操作有效,其他时候并不起作用,如果你将一个泛型方法调用的结果(例如New.map())作为参数,传递给另一个方法,这时编译器并不会执行类型推断。这时候编译器认为,调用泛型方法后,其返回值被赋予一个object类型的变量。

分享到:
评论

相关推荐

    java泛型学习全面页面下载资料

    6. **类型推断**:描述了Java编译器如何根据上下文自动推断类型参数,例如在Lambda表达式和方法调用中。 7. **泛型与反射**:讨论泛型如何与Java反射API交互,以及如何在反射中处理泛型类型。 8. **泛型与多态**:...

    (PDF)C#入门经典.0002

    由于提供的具体内容较少,以下是一些推测性的主题,这些主题可能是第二部分中讨论的内容: #### 1. 面向对象编程基础 - 类与对象的概念 - 封装、继承和多态 - 接口与抽象类 #### 2. 基本数据类型与变量 - 数值类型...

    [Java泛型和集合].

    在Java中,泛型是一种在类、接口和方法中引入类型参数的技术。它们允许我们在编写代码时指定一个或多个类型,而这些类型可以在实际使用时进行替换。这带来了两大优势:编译时类型检查和消除类型转换的需要。例如,`...

    java 继承泛型类示例

    在Java编程语言中,泛型是一种强大的特性,它允许我们在类、接口和方法中使用类型参数,从而提高代码的灵活性和安全性。当我们谈论“继承泛型类”时,这意味着一个类(子类)正在扩展一个已经定义了泛型的类(父类)...

    java中的泛型样例

    Java中的泛型是一种强大的编程工具,它允许程序员在定义类、接口和方法时指定类型参数,从而提高了代码的类型安全性和重用性。这个压缩包文件"Generics"可能包含了多个示例,用于演示和解释泛型在Java中的应用。 ...

    第1章 泛型+ppt+pdf+例子

    泛型方法的类型参数独立于类的类型参数,可以根据调用方式推断。 此外,泛型还可以应用于接口,如`interface MyInterface&lt;T&gt; {...}`,这样实现了该接口的类就需要提供一个具体的类型参数。泛型也可以用于类的继承,...

    Java源码泛型的集合类应用.rar

    JDK 7以后,钻石操作符`&lt;&gt;`可以省略具体的类型参数,编译器会从上下文中推断。 8. **泛型与接口**:Java集合框架中的接口如`List`、`Set`和`Map`都是泛型接口,我们可以根据实际需求实例化为具体的泛型类型。例如,...

    开源项目-sirkon-snippets.zip

    3. **类型推断**:Go 2.0可能引入更强大的类型推断机制,帮助编译器自动识别和填充类型参数,减少开发者的工作量。 4. **接口与泛型的结合**:泛型可以与Go的接口系统相结合,创建更加灵活的抽象。通过定义泛型接口...

    Swift programming language CN

    - **Swift 4.0** (2017年) - 加强了类型推断能力,引入了改进的字符串处理和更好的性能优化。 - **Swift 5.0** (2019年) - 实现了 ABI 稳定性,意味着开发者可以在应用中使用第三方库而不用担心未来版本的不兼容问题...

    Swift教程:Swift基础,类型安全和类型推断

    接着,我们重点讨论“类型安全”。在Swift中,类型安全意味着编译器会确保变量、常量和表达式之间的操作是正确的,防止了潜在的类型错误。例如,你不能将一个字符串与整数相加,因为这两种类型不兼容。这种严格的...

    Tackling.TypeScript.2020.6.pdf

    - **泛型**:使用尖括号`&lt;&gt;`表示类型参数。 - **类型变量**:通过类型参数实现对类型的复用。 #### 7.15 示例:泛型类 - **定义**:使用泛型创建通用的类模板。 - **实例化**:在创建类实例时指定具体的类型参数。 ...

    开源项目-golang-go.zip

    泛型,也被称为参数化类型或泛型类型,允许开发者定义可以适用于多种数据类型的函数或数据结构。在Java、C#和C++等语言中,泛型已经被广泛使用,可以提供类型安全并减少运行时类型检查的需求。在Go语言的提案Issue #...

    Beginning C# 6.0 Programming with Visual Studio 2015

    - **类型推断**:讲解了类型推断的工作原理。 - **匿名类型**:介绍匿名类型的使用场景。 - **动态查找**:探讨了动态查找的机制。 - **高级方法参数**:讲解了参数传递的高级特性,如可选参数、命名参数等。 -...

    delphi-generics.rar_2009 handbook_delphi 2009_delphi pdf

    首先,书中讲解了泛型的基础知识,包括如何声明泛型类型参数,以及如何限制这些参数的类型。例如,你可以创建一个泛型函数或方法,使其接受任何类型的参数,但同时也可以通过约束条件确保这些参数必须实现特定的接口...

    jdk-7u15-windows-i586

    2. **钻石操作符**:在创建泛型实例时,可以省略类型参数,编译器会自动推断出类型。 3. **类型推断**:编译器能够根据上下文推断局部变量的类型,简化了代码。 4. **多异常处理**:在一个catch块中可以捕获多种类型...

    jdk-7windows-x64

    - **钻石操作符**:在创建带匿名类型参数的构造器时,可以省略类型参数,如`new ArrayList();` - **多重捕获**:在`try-catch`语句中,可以同时捕获多种类型的异常。 - **字符串.in(String[])**:用于检查字符串...

    java8的64位安装包jdk-8u181-windows-x64

    6. **类型接口**:Java 8引入了泛型接口的类型推断,使得创建泛型接口更加简单。 7. **新的Optional类**:Optional类是一个容器对象,可能包含或不包含非null值。它可以用来避免空指针异常,鼓励开发者显式地处理...

    jdk-8u281-windows-x64.zip

    9. **改进的泛型推断**:通过引入钻石操作符(),编译器能够自动推断泛型实例化时的类型,使代码更简洁。 10. **新的枚举语法**:允许在枚举中定义方法,使得枚举类型更像类,增强了枚举的可扩展性。 安装"jdk-8u...

    几本有帮助的电子书

    5. **类型推断**:Java 7开始引入了类型推断,编译器可以根据上下文自动推断类型参数,简化代码,如`List&lt;String&gt; list = new ArrayList();` 6. **泛型与集合**:泛型在Java集合框架中有着广泛的应用,通过泛型可以...

Global site tag (gtag.js) - Google Analytics