public class Outer
{
private class Inner { ... }
void someMethod()
{
Inner fred = new Inner();
...
}
}
public class Outer
{
void someMethod()
{
class Inner { ... }
Inner fred = new Inner();
...
}
}
Creating a Comparator as an inner class
Arrays.sortComparator insteadComparator
public static void main(String[] args)
{
String[] names = { "Fred", "Wilma", "Barney" };
class LengthComparator implements Comparator
{
public int compare(Object o1, Object o2)
{
return ((String) o1).length() - ((String) o2).length();
}
}
Arrays.sort(names, new LengthComparator());
}
Arrays.sort(names, new LengthComparator());
Comparator fred = new LengthComparator(); Arrays.sort(names, fred);
Arrays.sort(names, new Comparator()
{
public int compare(Object o1, Object o2)
{
return ((String) o1).length() - ((String) o2).length();
}
});
Let's make Item an inner class of
ArrayListAddressBook (from the lab):
public class ArrayListAddressBook
{
private class Item
{
String name;
String key;
String value;
}
...
}
Which of the following is true?
ArrayListAddressBook class can
construct and access Item objectsArrayListAddressBook class refers to
the inner class as ArrayListAddressBook.ItemItem class is poorly designed because the instance
variables of Item should have been declared as
privateItem class should have been added to the
AddressBook interface instead of
the ArrayListAddressBook classAddressBook
public class MockAddressBook implements AddressBook
{
public void load(String sourceName) {}
public void save() {}
public void get(String name, String key) { return "Fred"; }
public void put(String name, String key, String value) {}
public void remove(String name, String key) {}
}
AddressBook book = new MockAddressBook()
AddressBook book = new ArrayListAddressBook()
Why is it necessary that the real class and the mock address book class implement the same interface?
Arrays and CollectionsWorked Example 9.1