Вложенные классы и перечисления. Локальные и анонимные классы

Содержание

Слайд 2

VIII. Вложенные классы и перечисления 3. Локальные и анонимные классы

VIII. Вложенные классы и перечисления
3. Локальные и анонимные классы


Слайд 3

Локальные классы

Локальные классы

Слайд 4

Локальный компаратор public class LocalComparatorDemo { public static void main(String args[])

Локальный компаратор

public class LocalComparatorDemo {
public static void main(String args[]) {

List produce = new ArrayList();
produce.add("Orange");
produce.add("Grapes");
produce.add("Banana");
produce.add("Apple");
produce.add("Watermelon");
produce.add("Kiwi");
produce.add("Melon");
System.out.println(produce);
System.out.println("Sorting in reverse order...");
class ReverseComparator implements Comparator {
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
}
Collections.sort(produce, new ReverseComparator());
System.out.println(produce);
}
}
[Orange, Grapes, Banana, Apple, Watermelon, Kiwi, Melon]
Sorting in reverse order...
[Watermelon, Orange, Melon, Kiwi, Grapes, Banana, Apple]
Слайд 5

Локальный итератор class LocalStringList implements Iterable { private String[] strings =

Локальный итератор

class LocalStringList implements Iterable {
private String[] strings = new

String[100];
private int size;
public void add(String string) {
strings[size++] = string;
}
public Iterator iterator() {
class LocalIterator implements Iterator {
private int position = 0;
public String next() {
return strings[position++];
}
public boolean hasNext() {
return position < size;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
return new LocalIterator();
}
}
Слайд 6

Локальный итератор public class LocalIteratorDemo { public static void main(String[] args)

Локальный итератор

public class LocalIteratorDemo {
public static void main(String[] args) {

LocalStringList list = new LocalStringList();
list.add("Harry Hacker");
list.add("Tony Tester");
list.add("Cindy Coder");
Iterator iter = list.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
}
}
Harry Hacker
Tony Tester
Cindy Coder
Слайд 7

Анонимные классы


Анонимные классы

Слайд 8

Анонимные классы

Анонимные классы

Слайд 9

Анонимный компаратор public class AnonymousComparator { public static void main(String args[])

Анонимный компаратор

public class AnonymousComparator {
public static void main(String args[]) {

List list = new ArrayList();
list.add("Harry Hacker");
list.add("Tony Tester");
list.add("Alice Coder");
System.out.println(list);
Collections.sort(list);
System.out.println(list);
Collections.sort(list, new Comparator() {
public int compare(String s1, String s2) {
return s2.compareTo(s1);
}
});
System.out.println(list);
}
}
[Harry Hacker, Tony Tester, Alice Coder]
[Alice Coder, Harry Hacker, Tony Tester]
[Tony Tester, Harry Hacker, Alice Coder]
Слайд 10

Анонимный итератор class AnonymousStringList implements Iterable { private String[] strings =

Анонимный итератор

class AnonymousStringList implements Iterable {
private String[] strings = new

String[100];
private int size;
public void add(String string) {
strings[size++] = string;
}
public Iterator iterator() {
return new Iterator() {
private int position = 0;
public String next() {
return strings[position++];
}
public boolean hasNext() {
return position < size;
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
}
Слайд 11

Анонимный итератор public class AnonymousIteratorDemo { public static void main(String[] args)

Анонимный итератор

public class AnonymousIteratorDemo {
public static void main(String[] args) {

AnonymousStringList list = new AnonymousStringList();
list.add("Harry Hacker");
list.add("Tony Tester");
list.add("Cindy Coder");
Iterator iter = list.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
}
}
Harry Hacker
Tony Tester
Cindy Coder
Слайд 12

Уникальность объявления анонимных классов

Уникальность объявления анонимных классов

Слайд 13

Несколько анонимных классов import java.util.Comparator; public class ManyAnonymousDemo { interface Greeter

Несколько анонимных классов

import java.util.Comparator;
public class ManyAnonymousDemo {
interface Greeter {
public

void greet(String name);
}
public static void main(String[] args) {
Greeter firstGreeter = new Greeter() {
public void greet(String name) {
System.out.println("Hello " + name);
}
};
Greeter secondGreeter = new Greeter() {
public void greet(String name) {
System.out.println("Hello " + name);
}
};
firstGreeter.greet("Harry Hacker");
secondGreeter.greet("Tony Tester");
}
}
Hello Harry Hacker
Hello Tony Tester
Слайд 14

Class файлы для анонимных классов

Class файлы для анонимных классов

Слайд 15

Анонимные классы и полиморфизм

Анонимные классы и полиморфизм

Слайд 16

Анонимные классы и конструкторы


Анонимные классы и конструкторы

Слайд 17

Вызов конструктора базового класса

Вызов конструктора базового класса

Слайд 18

Вызов конструктора базового класса public class BaseConstructorDemo { static abstract class

Вызов конструктора базового класса

public class BaseConstructorDemo {
static abstract class Greeter

{
private String greeting;
public Greeter(String greeting) {
this.greeting = greeting;
}
public void greet(String name) {
System.out.println(greeting + " " + name);
}
}
public static void main(String[] args) {
Greeter doubleEnglishGreeter = new Greeter("Hello") {
public void greet(String name) {
super.greet(name);
super.greet(name);
}
};
Greeter tripleFrenchGreeter = new Greeter("Salut") {
public void greet(String name) {
super.greet(name);
super.greet(name);
super.greet(name);
}
};
doubleEnglishGreeter.greet("Harry Hacker");
tripleFrenchGreeter.greet("Tonny Tester");
}
}
Слайд 19

Вызов конструктора базового класса Hello Harry Hacker Hello Harry Hacker Salut

Вызов конструктора базового класса
Hello Harry Hacker
Hello Harry Hacker
Salut Tonny Tester
Salut Tonny

Tester
Salut Tonny Tester
Слайд 20

Слайд 21

Class файлы для анонимных классов

Class файлы для анонимных классов

Слайд 22

Анонимный компаратор public class AnonymousThreadDemo { public static void main(String[] args)

Анонимный компаратор

public class AnonymousThreadDemo {
public static void main(String[] args) {

Thread t = new Thread() {
public void run() {
for (int i = 0; i < 10; i++) {
Date now = new Date();
System.out.println("Hello World! " + now);
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
t.start();
}
}
Hello World! Thu Jan 03 15:35:52 GMT+07:00 2013
Hello World! Thu Jan 03 15:35:53 GMT+07:00 2013
Hello World! Thu Jan 03 15:35:54 GMT+07:00 2013
Hello World! Thu Jan 03 15:35:55 GMT+07:00 2013
Hello World! Thu Jan 03 15:35:56 GMT+07:00 2013
Hello World! Thu Jan 03 15:35:57 GMT+07:00 2013
Hello World! Thu Jan 03 15:35:58 GMT+07:00 2013
Hello World! Thu Jan 03 15:35:59 GMT+07:00 2013
Hello World! Thu Jan 03 15:36:00 GMT+07:00 2013
Hello World! Thu Jan 03 15:36:01 GMT+07:00 2013
Слайд 23

Анонимные классы сделать наблюдатель

Анонимные классы сделать наблюдатель

Слайд 24

Thread

Thread

Слайд 25

Слайд 26

Итератор как анонимный класс

Итератор как анонимный класс

Слайд 27

Anonymous List

Anonymous List

Слайд 28

Local List

Local List

Слайд 29