Inner Class Exampleimport 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"));
}
}
NoteA 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 |