科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件JDK5.0的11个主要新特征

JDK5.0的11个主要新特征

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

增强了java的类型安全,可以在编译期间对容器内的对象进行类型检查,在运行期不必进行类型的转换。

作者:中国IT实验室 来源:中国IT实验室 2007年8月21日

关键字: JDK

  • 评论
  • 分享微博
  • 分享邮件

1           泛型(Generic)

1.1          说明

增强了java的类型安全,可以在编译期间对容器内的对象进行类型检查,在运行期不必进行类型的转换。而在j2se5之前必须在运行期动态进行容器内对象的检查及转换减少含糊的容器,可以定义什么类型的数据放入容器


ArrayList<Integer> listOfIntegers; // <TYPE_NAME> is new to the syntax

Integer integerObject;

listOfIntegers = new ArrayList<Integer>(); // <TYPE_NAME> is new to the syntax

listOfIntegers.add(new Integer(10)); // 只能是Integer类型

integerObject = listOfIntegers.get(0); // 取出对象不需要转换 

1.2          用法

声明及实例化泛型类:

HashMap<String,Float> hm = new HashMap<String,Float>();

//不能使用原始类型

GenList<int> nList = new GenList<int>();  //编译错误 

J2SE 5.0目前不支持原始类型作为类型参数(type parameter)

定义泛型接口:

public interface GenInterface<T> {

    void func(T t);

定义泛型类:

public class ArrayList<ItemType> { ... }

public class GenMap<T, V> { ... }

例1:

public class MyList<Element> extends LinkedList<Element>

{

       public void swap(int i, int j)

       {

              Element temp = this.get(i);

              this.set(i, this.get(j));

              this.set(j, temp);

       }

      

       public static void main(String[] args)

       {

              MyList<String> list = new MyList<String>();

              list.add("hi");

              list.add("andy");

              System.out.println(list.get(0) + " " + list.get(1));

              list.swap(0,1);

              System.out.println(list.get(0) + " " + list.get(1));

       }

例2:

public class GenList <T>{

       private T[] elements;

       private int size = 0;

       private int length = 0;

 

       public GenList(int size) {

              elements = (T[])new Object[size];

              this.size = size;

       }

 

       public T get(int i) {

              if (i < length) {

                     return elements[i];

              }

              return null;

       }

      

       public void add(T e) {

              if (length < size - 1)

                     elements[length++] = e;

       }

泛型方法:

public class TestGenerics{

       public <T> String getString(T obj) { //实现了一个泛型方法

              return obj.toString();

       }

      

       public static void main(String [] args){

              TestGenerics t = new TestGenerics();

              String s = "Hello";

              Integer i = 100;

              System.out.println(t.getString(s));

              System.out.println(t.getString(i));

              }

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    闂傚倸鍊风欢锟犲矗鎼淬劌绐楅柡鍥╁亹閺嬪酣鏌曡箛瀣仾濠殿垰銈搁弻鏇$疀鐎n亖鍋撻弽顓ㄧ稏闁跨噦鎷�

    婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓涢悾娲⒑闂堟单鍫ュ疾濠婂嫭鍙忔繝濠傜墛閸嬨劍銇勯弽銊с€掗柟钘夊暣閺岀喖鎮滈埡鍌涚彋閻庤娲樺畝绋跨暦閸洖鐓涢柛灞剧矋濞堟悂姊绘担绛嬪殐闁搞劋鍗冲畷銏ゅ冀椤愩儱小闂佹寧绋戠€氼參宕伴崱妯镐簻闁靛牆鎳庢慨顒€鈹戦埥鍡椾簼婵犮垺锚铻炴俊銈呮噺閸嬪倹绻涢崱妯诲碍閻庢艾顦甸弻宥堫檨闁告挾鍠庨锝夘敆娓氬﹦鐭楁繛鎾村焹閸嬫捇鏌e☉娆愬磳闁哄本绋戦埞鎴﹀川椤曞懏鈻婄紓鍌欑劍椤ㄥ懘鎯岄崒鐐靛祦閹兼番鍔岄悞鍨亜閹烘垵顏╅悗姘槹閵囧嫰寮介妸褎鍣ョ紓浣筋嚙濡繈寮婚悢纰辨晣鐟滃秹鎮橀懠顒傜<閺夊牄鍔庣粻鐐烘煛鐏炶姤鍠橀柡浣瑰姍瀹曠喖顢橀悩铏钒闂備浇宕垫慨鎶芥⒔瀹ュ鍨傞柦妯猴級閿濆绀嬫い鏍ㄧ☉濞堟粓姊虹涵鍛【妞ゎ偅娲熼崺鈧い鎺嗗亾闁挎洩濡囧Σ鎰板籍閸繄顓洪梺缁樺姇瀵剙螖閸涱喚鍘搁梺鍓插亽閸嬪嫰鎮橀敃鍌涚厱閻庯綆鍋嗘晶顒傜磼閸屾稑绗ч柟鐟板閹煎湱鎲撮崟闈涙櫏闂傚倷绀侀幖顐も偓姘卞厴瀹曞綊鏌嗗鍛紱閻庡箍鍎遍ˇ浼村磿瀹ュ鐓曢柡鍥ュ妼婢ь垰霉閻樿秮顏堟箒闂佹寧绻傚Λ妤呭煝閺囥垺鐓冪憸婊堝礈濮樿泛钃熼柕濞у嫷鍋ㄩ梺缁樺姇椤曨參鍩㈤弴銏″€甸柨婵嗗€瑰▍鍥ㄣ亜韫囨稐鎲鹃柡灞炬礋瀹曢亶顢橀悢濂変紦

    重磅专题
    往期文章
    最新文章