美文网首页
Dart 语言泛型Generic

Dart 语言泛型Generic

作者: iCloudEnd | 来源:发表于2019-02-05 01:08 被阅读15次

generic 泛型

泛型在现代面向对象语言中有很重要的地位。为什么要发明泛型这个概念呢?

维基百科上认为要加强安全和减少类型转换次数

一些强类型程序语言支持泛型,其主要目的是加强类型安全及减少类转换的次数,但一些支持泛型的程序语言只能达到部分目的。

下面是各个类型泛型介绍

.NET 泛型加快运行速度

.NET 泛型的参数只可以代表类,不能代表个别对象。由于 .NET 泛型的类型参数之实际类型在运行时均不会被消除,运行速度会因为类型转换的次数减少而加快。另外,使用GetType()方法可于程序运行时得知泛型及其类型参数的实际类型,更可以运用反射编程。

Java 泛型扩充类型,但速度并未提高

泛型在2004年的J2SE5.0时被引入Java语言的,泛型作用有两个分别为扩充类型体系和保障编译时类型安全。
由于Java泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型,而且无法直接使用基本值类型作为泛型类型参数。Java编译程序在编译泛型时会自动加入类型转换的编码,故运行速度不会因为使用泛型而加快。

由于运行时会消除泛型的对象实例类型信息等缺陷经常被人诟病,Java及JVM的开发方面也尝试解决这个问题,例如Java通过在生成字节码时添加类型推导辅助信息,从而可以通过反射接口获得部分泛型信息。通过改进泛型在JVM的实现,使其支持基本值类型泛型和直接获得泛型信息等。

泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法。Dart由于不存在接口概念,所以Dart支持泛型类和泛型方法。下面我介绍一下Dart语言的泛型类。

下面是demo

class User<C> {
  List<C> credentials;
  User(){
    credentials = new List<C>();
  }
  addCredential(C credential){
   
    this.credentials.add(credential);
  }
}
main() {
 
  User<int> intUser= new User<int>();
  intUser.addCredential(999);
 
  print(intUser.credentials);
}

运行效果:

[999]

相关文章

  • Dart 语言泛型Generic

    generic 泛型 泛型在现代面向对象语言中有很重要的地位。为什么要发明泛型这个概念呢? 维基百科上认为要加强安...

  • C#---API-02(Application Programm

    一、泛型概述 1. 泛型 1.1 泛型是什么? 泛型(generic)是C#语言2.0和通用语言运行时(CLR)得...

  • go 泛型

    go 泛型 1. 类型参数(Type parameters) Go语言的泛型(Generic)叫做类型参数。泛型可...

  • Dart基础(八)-泛型

    1.简介:   Dart语言是强类型语言,强类型语言都支持泛型Generics。那么什么是泛型呢?泛型是指代码在使...

  • 不理解Typescript泛型?看完就理解了

    如何理解泛型 泛型(Generic Type)存在于许多编程语言中,许多刚接触Typescript且没有Java、...

  • 泛型

    1. 泛型概述 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,...

  • 设计模式--泛型

    一. 泛型的定义 泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机...

  • java泛型

    什么是泛型? 泛型(Generic type 或者 generics)是对Java语言的类型系统的一种扩展,以支持...

  • java 泛型

    什么是泛型? 泛型(Generic type 或者 generics)是对Java语言的类型系统的一种扩展,以支持...

  • java泛值的重要性

    什么是泛型? 泛型(Generic type 或者 generics)是对Java语言的类型系统的一种扩展,以支持...

网友评论

      本文标题:Dart 语言泛型Generic

      本文链接:https://www.haomeiwen.com/subject/apvmsqtx.html