Site hosted by Angelfire.com: Build your free website today!
 

Inner Class Example

import java.util.Iterator;
import java.util.Vector;

public class PhoneBook {
    protected class PhoneBookEntry {  // protected Inner Class
        int id;
        String name;
        String phone;
        PhoneBookEntry(String name, String phone) {
            id = idno++;  // accessing enclosing member
            this.name = name;
            this.phone = phone;
        }
        String getId() {
            return Integer.toString(id);
        }
        String getPhone() {
            return phone;
        }
        boolean isName(String name) {
            return this.name.equals(name);
        }
    }

    protected Vector phonebook = new Vector();
    protected int idno = 0;

    protected PhoneBookEntry findByName(String name) {
        Iterator it = phonebook.iterator();
        while (it.hasNext()) {
            PhoneBookEntry e = (PhoneBookEntry) it.next();
            if (e.isName(name)) {
                return e;
            }
        }
        return null;
    }
    public void add(String name, String phone) {
        PhoneBookEntry e = new PhoneBookEntry(name, phone);
        phonebook.add(e);
    }
    public String getPhoneByName(String name) {
        PhoneBookEntry e = findByName(name);
        if (e != null) {
            return e.getPhone();
        }
        return null;
    }
    public String getDetail(String name) {
        PhoneBookEntry e = findByName(name);
        if (e != null) {
            return e.getId() + "," + name + "," + e.getPhone();
        }
        return null;
    }

    public static void main(String[] args) {
        PhoneBook ph = new PhoneBook();
        ph.add("Jack", "123123123");
        ph.add("Paul", "1234567");
        ph.add("Tom", "8889999");
        System.out.println(ph.getPhoneByName("Paul"));
        System.out.println(ph.getDetail("Paul"));
    }
}

Note

A seperate class file is generated for the inner class. If you look at your directory, you should see a class file by the name PhoneBook$PhoneBookEntry.class