社区服务 统计排行 帮助
  • 3200阅读
  • 0回复
aksht 离线

级别: 新手上路

显示用户信息 

倒序阅读, 只看楼主, 楼主   发表于: 2008-01-11
更多操作

创建自动识别类型的Vector,用来弥补JAVA的缺陷

本帖被 aksht 从 Java SE 编程 移动到本区(2008-01-11)
以下这个例子选自<< Thinking in java >> , 本人觉得很有启发,在此与大家分享一下:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package com.ht.example;

/**
* @version 1.2
* @author ht
*/
//这个例子用于生成能自动识别类型的Vector,用来弥补JAVA的缺陷

import java.util.*;

//地鼠类
class Gopher
{
    private int gopherNumber;
   
        /**
        * Constructor of Gopher 构造方法
        * @param i <int>
        */
    Gopher( int i )
    {
        gopherNumber = i;   
    }
    /**
        * print 用于打印信息
        * @param msg <String>
        */
    public void print( String msg )
    {
        if( msg != null )
            System.out.println("MSG:"+msg);
        System.out.println( "GopherNumber is " + gopherNumber );   
    }
}

//绊倒地鼠
class GopherTrip
{
        /**
        * caughtGopher()方法
        * @param g <Gopher>
        */
    static void caughtGopher( Gopher g )
    {
        g.print( "caught one!" );   
    }   
}

public class GopherVector
{
    //Vector 类可以实现可增长的对象数组。
    //与数组一样,它包含可以使用整数索引进行访问的组件。
        //在此用私有的Vector
    private Vector v = new Vector();
       
    /**
     *addElement() 添加元素 , 在这里元素类型只能是Gopher[地鼠],所以在编译时就会执行类型检查
        * 不会允许你添加其它类型
     *@param g <Gopher>
     *@return void
     */
    public void addElement( Gopher g )
    {
        v.addElement(g);
    }
    /**
     *elementAt()  此方法通过索引返回需要的Gopher
        * @param i <int>
        * @return v.elementAt(i) <Gopher> 注意:返回类型为Gopher
     */
    public Gopher elementAt( int i )
    {
        //注意类型转换
        return (Gopher)v.elementAt(i);
    }
   
        /**
        * size() 返回 v <Vector> 中 元素个数
        * @param null
        * @return v.size <int>
        */
    public int size()
    {
        return v.size();   
    }
    /**
        * main()
        * @param args
        */
    public static void main( String args[] )
    {
                //创建一个地鼠集合
        GopherVector g  = new GopherVector();
       
                //往地鼠集合中添加元素,元素的类型必须是地鼠类型
        for( int i = 0 ; i < 3; i ++ )
        {
            g.addElement(new Gopher(i));   
        }
       
                //通过绊倒地鼠类的静态抓地鼠方法抓地鼠
                //
        for( int i = 0 ; i < g.size() ; i ++ )
        {
            GopherTrip.caughtGopher(g.elementAt(i));   
        }
    }
}

/**Result
* MSG:caught one!
* GopherNumber is 0
* MSG:caught one!
* GopherNumber is 1
* MSG:caught one!
* GopherNumber is 2
*/

这个例子对于要添加的对象类型有严格的限制,在代码的角度来说,此方法沉闷乏味,但如果你用了错误的类型,他会立刻告诉你,编译时类型检查,而不是运行时类型检查(RTTI)

努力是通向成功的唯一途径~
描述
快速回复

批量上传需要先选择文件,再选择上传
认证码:

 回复后跳转到最后一页