知识大全 泛型(一)

Posted 类型

篇首语:曾无好事来相访,赖尔高文一起予。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 泛型(一)相关的知识,希望对你有一定的参考价值。

Java 学习笔记:泛型(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一 为什么需要泛型        在面向对象编程语言中 多态算是一种泛型 但是多态一般的做法是把子类赋给其基类 以此实现灵活性更高的代码 但是受限于Java的单继承机制 代码的灵活性并不能得到多大的提高 于是 设计模式中推荐的法则是 面向接口编程 可是 问题还是没有得到很好的解决 因为即使是面向接口编程对于设计类库这种需求在某种程度上来说还是太过苛刻了(试想一下如果你需要写一个容器类 但是容器里面的元素要求实现某个特定的接口 这样是不是会变得有点麻烦) 泛型是Java SE 的一个新特性 凭借泛型 java实现了参数化类型的概念         对比一下以下代码:        public class GenericTest         private Object a;

  public GenericTest (Object a)                    this a = a;       

  public Object getA()             return a;       

  public void setA(Object a)             this a = a;       

  public static void main(String[] args)                    GenericTest g = new GenericTest ( );            String str = (String)g getA();          ①            g setA( );              ②            Integer x = (Integer) g getA();           

    

  public class GenericTest <T>         private T a;

  public GenericTest (T a)                    this a = a;       

  public T getA()             return a;       

  public void setA(T a)             this a = a;       

  public static void main(String[] args)                    GenericTest <String> g = new GenericTest <String>( );            String str = g getA();                  ①            // 编译时错误            g setA( )                                            ②           

        从两段程序的①可以看出 使用泛型之后我们不再需要做类型的转换 因为编译器会帮你处理一切细节 从程序的②可以看出 当我们使用泛型之后编译器会自动进行类型检查        所以 使用泛型之后我们可以得到更方便 更安全的代码

  二 泛型接口        泛型也可以应用于接口 简单的例子如下

     public interface GenericInterface <T>         T next();   

  public class GenericTest implements GenericInterface<Integer>         private int[] a;        private int size;        private int pos = ;        private int addPos = ;

  public GenericTest (int sz)                    this size = sz;            a = new int[sz];       

  public Integer next()                    if ( pos > addPos )                            pos = ;           

  return a[pos++];       

  public boolean hasNext()                    return !(pos == addPos);       

  public boolean add(int value)                    if ( addPos >= size )                            return false;                        else                            a[addPos++] = value;                return true;                   

  public int getSize()             return size;           

  public class GenericTest implements GenericInterface<String>         private String[] a;        private int size;        private int pos = ;        private int addPos = ;

  public GenericTest (int sz)                    this size = sz;            a = new String[sz];       

  public String next()                    if ( pos > addPos )                            pos = ;           

  return a[pos++];       

  public boolean hasNext()                    return !(pos == addPos);       

  public boolean add(String value)                    if ( addPos >= size )                            return false;                        else                            a[addPos++] = value;                return true;                   

  public int getSize()             return size;           

  public class GenericTest         public static void main(String[] args)                    GenericTest g = new GenericTest ( );            GenericTest g = new GenericTest ( );            String[] values = a b c d e f g h i j k l split( );

  for (int i = ; i < g getSize(); i++)                            g add(i);           

  for (int i = ; i < g getSize(); i++)                            g add(values[i]);           

  while(g hasNext())                            System out println(g next());           

  while(g hasNext())                            System out println(g next());                       

           这里需要注意一点 基本类型不能作为泛型的类型参数 GenericTest 里面的元素为int 但是参数需要用Integer cha138/Article/program/Java/gj/201311/27307

相关参考

知识大全 java泛型编程

  JDK令我们期待很久可是当他发布的时候却更换版本号为这说明Java已经有大幅度的变化本文将讲解JDK支持的新功能Java的泛型  Java泛型  其实Java的泛型就是创建一个用类型作为参数的类就

知识大全 JDK 5.0中的泛型类型学习

JDK5.0中的泛型类型学习  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JDK中增加的泛型类

知识大全 Java泛型编程之诀窍

Java泛型编程之诀窍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nb

知识大全 泛型编程:模板特殊化

PureC++:泛型编程:模板特殊化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在上一期专栏

知识大全 Java的泛型原来这样让人不舒服

Java的泛型原来这样让人不舒服  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java泛型中的

知识大全 构建可反转排序的泛型字典类(1)--雏形

  前言  前段时间为了查找泛型资料我翻译了OReilly出版的《C#Cookbook》这本书的几个关于泛型的章节其中反转SortedList里的内容(见)这一节中有一个接近行代码的例子当时看到这个例

知识大全 java中使用泛型

  泛型是在jdk之后才出现的一种机制说简单点就是一个特定的对象可以接收任何的对象例如杯子可以装水也可以装饮料说简单点就是来者不拒什么都要下面我就来写个小例子看一下  写一个接口Info里面什么方法都

知识大全 J2SE5.0新特性示例---泛型

J2SE5.0新特性示例---泛型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  简介  泛型其

知识大全 轻松掌握 Java 泛型 (第 1 部分)

轻松掌握Java泛型(第1部分)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JSE-代号为T

知识大全 DataTable转换成泛型列表集合

DataTable转换成泛型列表集合  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n