<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FClass_Definition%2FAnonymous_inner_class</id>
		<title>Java Tutorial/Class Definition/Anonymous inner class - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2FClass_Definition%2FAnonymous_inner_class"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/Anonymous_inner_class&amp;action=history"/>
		<updated>2026-04-21T22:51:43Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/Anonymous_inner_class&amp;diff=4198&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/Anonymous_inner_class&amp;diff=4198&amp;oldid=prev"/>
				<updated>2010-06-01T05:00:39Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 05:00, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/Anonymous_inner_class&amp;diff=4197&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java_Tutorial/Class_Definition/Anonymous_inner_class&amp;diff=4197&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:27Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Accessing its enclosing instance from an inner class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
  private int number = 12;&lt;br /&gt;
  public Main() {&lt;br /&gt;
    InnerClass inner = new InnerClass();&lt;br /&gt;
    inner.printNumber();&lt;br /&gt;
  }&lt;br /&gt;
  class InnerClass {&lt;br /&gt;
    public void printNumber() {&lt;br /&gt;
      System.out.println(Main.this.number);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    new Main();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Access inner class from outside ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Main {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Outer outer = new Outer();&lt;br /&gt;
        outer.new Inner().hello();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Outer {&lt;br /&gt;
    public class Inner {&lt;br /&gt;
        public void hello(){&lt;br /&gt;
          System.out.println(&amp;quot;Hello from Inner()&amp;quot;);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  A method that returns an anonymous inner class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public A cont() {&lt;br /&gt;
    return new A() {&lt;br /&gt;
      private int i = 11;&lt;br /&gt;
      public int value() {&lt;br /&gt;
        return i;&lt;br /&gt;
      }&lt;br /&gt;
    }; // Semicolon required in this case&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MainClass p = new MainClass();&lt;br /&gt;
    A c = p.cont();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface A {&lt;br /&gt;
  int value();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  An anonymous inner class that calls the base-class constructor ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public A wrap(int x) {&lt;br /&gt;
    // Base constructor call:&lt;br /&gt;
    return new A(x) { // Pass constructor argument.&lt;br /&gt;
      public int value() {&lt;br /&gt;
        return super.value() * 47;&lt;br /&gt;
      }&lt;br /&gt;
    }; // Semicolon required&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MainClass p = new MainClass();&lt;br /&gt;
    A w = p.wrap(10);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class A {&lt;br /&gt;
  private int i;&lt;br /&gt;
  public A(int x) {&lt;br /&gt;
    i = x;&lt;br /&gt;
  }&lt;br /&gt;
  public int value() {&lt;br /&gt;
    return i;&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  An anonymous inner class that performs initialization ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public A dest(final String dest) {&lt;br /&gt;
    return new A() {&lt;br /&gt;
      private String label = dest;&lt;br /&gt;
      public String readLabel() {&lt;br /&gt;
        return label;&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MainClass p = new MainClass();&lt;br /&gt;
    A d = p.dest(&amp;quot;A&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface A {&lt;br /&gt;
  String readLabel();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Anonymous inner class cannot have a named constructor, only an instance initializer ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
interface Counter {&lt;br /&gt;
  int next();&lt;br /&gt;
}&lt;br /&gt;
public class MainClass{&lt;br /&gt;
  &lt;br /&gt;
  private int count = 0;&lt;br /&gt;
  Counter getCounter(final String name) {&lt;br /&gt;
    return new Counter() {&lt;br /&gt;
      &lt;br /&gt;
      {&lt;br /&gt;
        System.out.println(&amp;quot;Counter()&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      public int next() {&lt;br /&gt;
        System.out.print(name); // Access local final&lt;br /&gt;
        return count++;&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MainClass lic = new MainClass();&lt;br /&gt;
    Counter c1 = lic.getCounter(&amp;quot;Local inner &amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Argument must be final to use inside anonymous inner class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public A dest(final String dest) {&lt;br /&gt;
    return new A() {&lt;br /&gt;
      private String label = dest;&lt;br /&gt;
      public String readLabel() {&lt;br /&gt;
        return label;&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MainClass p = new MainClass();&lt;br /&gt;
    A d = p.dest(&amp;quot;A&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface A {&lt;br /&gt;
  String readLabel();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Building the anonymous inner class in-place ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FilenameFilter;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.regex.Pattern;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static void main(final String[] args) {&lt;br /&gt;
    File path = new File(&amp;quot;.&amp;quot;);&lt;br /&gt;
    String[] list;&lt;br /&gt;
    if (args.length == 0)&lt;br /&gt;
      list = path.list();&lt;br /&gt;
    else&lt;br /&gt;
      list = path.list(new FilenameFilter() {&lt;br /&gt;
        private Pattern pattern = Pattern.rupile(args[0]);&lt;br /&gt;
        public boolean accept(File dir, String name) {&lt;br /&gt;
          return pattern.matcher(new File(name).getName()).matches();&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    Arrays.sort(list);&lt;br /&gt;
    for (int i = 0; i &amp;lt; list.length; i++)&lt;br /&gt;
      System.out.println(list[i]);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Creating a constructor for an anonymous inner class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
abstract class Base {&lt;br /&gt;
  public Base(int i) {&lt;br /&gt;
    System.out.println(&amp;quot;Base constructor, i = &amp;quot; + i);&lt;br /&gt;
  }&lt;br /&gt;
  public abstract void f();&lt;br /&gt;
}&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static Base getBase(int i) {&lt;br /&gt;
    return new Base(i) {&lt;br /&gt;
      {&lt;br /&gt;
        System.out.println(&amp;quot;Inside instance initializer&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      public void f() {&lt;br /&gt;
        System.out.println(&amp;quot;In anonymous f()&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Base base = getBase(47);&lt;br /&gt;
    base.f();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Base constructor, i = 47&lt;br /&gt;
Inside instance initializer&lt;br /&gt;
In anonymous f()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Define an inner class within a for loop. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Outer {&lt;br /&gt;
  int outer_x = 100;&lt;br /&gt;
   &lt;br /&gt;
  void test() {&lt;br /&gt;
    for(int i=0; i&amp;lt;10; i++) {&lt;br /&gt;
      class Inner {&lt;br /&gt;
        void display() {&lt;br /&gt;
          System.out.println(&amp;quot;display: outer_x = &amp;quot; + outer_x);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      Inner inner = new Inner();&lt;br /&gt;
      inner.display();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class InnerClassDemo {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Outer outer = new Outer();&lt;br /&gt;
    outer.test();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Demonstrate an inner class. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
class Outer {&lt;br /&gt;
  int outer_x = 100;&lt;br /&gt;
   &lt;br /&gt;
  void test() {&lt;br /&gt;
    Inner inner = new Inner();&lt;br /&gt;
    inner.display();&lt;br /&gt;
  }&lt;br /&gt;
   &lt;br /&gt;
  // this is an inner class&lt;br /&gt;
  class Inner {&lt;br /&gt;
    void display() {&lt;br /&gt;
      System.out.println(&amp;quot;display: outer_x = &amp;quot; + outer_x);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
class InnerClassDemo {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    Outer outer = new Outer();&lt;br /&gt;
    outer.test();&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Demonstrates anonymous classes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *     file: InnerClassDemo.java&lt;br /&gt;
 *  package: oreilly.hcj.nested&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
 ########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.ImageIcon;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JDialog;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
/**&lt;br /&gt;
 * Demonstrates anonymous classes.&lt;br /&gt;
 * &lt;br /&gt;
 * @author &lt;br /&gt;
   * @version $Revision: 1.3 $&lt;br /&gt;
   */&lt;br /&gt;
  private class BeepButton extends JButton implements ActionListener {&lt;br /&gt;
    /**&lt;br /&gt;
     * Creates a new BeepButton object.&lt;br /&gt;
     * &lt;br /&gt;
     * @param text&lt;br /&gt;
     *          The text to use for the beep button.&lt;br /&gt;
     */&lt;br /&gt;
    public BeepButton(final String text) {&lt;br /&gt;
      super(text);&lt;br /&gt;
      addActionListener(this);&lt;br /&gt;
    }&lt;br /&gt;
    /**&lt;br /&gt;
     * @see java.awt.event.ActionListener&lt;br /&gt;
     */&lt;br /&gt;
    public void actionPerformed(final ActionEvent event) {&lt;br /&gt;
      try {&lt;br /&gt;
        for (int count = 0; count &amp;lt; beepCount; count++) {&lt;br /&gt;
          Toolkit.getDefaultToolkit().beep();&lt;br /&gt;
          Thread.sleep(100); // wait for the old beep to finish.&lt;br /&gt;
        }&lt;br /&gt;
      } catch (final InterruptedException ex) {&lt;br /&gt;
        throw new RuntimeException(ex);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/* ########## End of File ########## */&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Demonstrates method-scoped inner classes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *     file: MethodInnerClassDemo.java&lt;br /&gt;
 *  package: oreilly.hcj.nested&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
 ########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Container;&lt;br /&gt;
import java.awt.GridLayout;&lt;br /&gt;
import java.awt.Toolkit;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import javax.swing.ImageIcon;&lt;br /&gt;
import javax.swing.JButton;&lt;br /&gt;
import javax.swing.JDialog;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
/**&lt;br /&gt;
 * Demonstrates method-scoped inner classes.&lt;br /&gt;
 * &lt;br /&gt;
 * @author &lt;br /&gt;
     * @version $Revision: 1.6 $&lt;br /&gt;
     */&lt;br /&gt;
    class MyActionListener implements ActionListener {&lt;br /&gt;
      /**&lt;br /&gt;
       * {@inheritDoc}&lt;br /&gt;
       */&lt;br /&gt;
      public void actionPerformed(final ActionEvent event) {&lt;br /&gt;
        Toolkit.getDefaultToolkit().beep();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    btn1.addActionListener(new MyActionListener());&lt;br /&gt;
    btn2.addActionListener(new MyActionListener());&lt;br /&gt;
    JPanel pnl = new JPanel(new GridLayout(1, 2));&lt;br /&gt;
    pnl.add(btn1);&lt;br /&gt;
    pnl.add(btn2);&lt;br /&gt;
    contentPane.add(BorderLayout.SOUTH, pnl);&lt;br /&gt;
    pack();&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Run the demo&lt;br /&gt;
   * &lt;br /&gt;
   * @param args&lt;br /&gt;
   *          Command Line Arguments.&lt;br /&gt;
   */&lt;br /&gt;
  public static final void main(final String[] args) {&lt;br /&gt;
    MethodInnerClassDemo demo = new MethodInnerClassDemo();&lt;br /&gt;
    demo.show();&lt;br /&gt;
    System.out.println(&amp;quot;Done&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Setter for the property demo.&lt;br /&gt;
   * &lt;br /&gt;
   * @param demo&lt;br /&gt;
   *          The new value for demo.&lt;br /&gt;
   */&lt;br /&gt;
  public void setDemo(final String demo) {&lt;br /&gt;
    this.demo = demo;&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Getter for the property demo.&lt;br /&gt;
   * &lt;br /&gt;
   * @return The current value of demo.&lt;br /&gt;
   */&lt;br /&gt;
  public String getDemo() {&lt;br /&gt;
    return demo;&lt;br /&gt;
  }&lt;br /&gt;
  /**&lt;br /&gt;
   * Some demo method.&lt;br /&gt;
   */&lt;br /&gt;
  public void someMethod() {&lt;br /&gt;
    // ActionListener listener = new MyActionListener(); // &amp;lt;= compiler error.&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/* ########## End of File ########## */&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Demonstration of some static nested classes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 *     file: DoubleNestedClassDemo.java&lt;br /&gt;
 *  package: oreilly.hcj.nested&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
/*&lt;br /&gt;
 *     file: DoubleNestedClass.java&lt;br /&gt;
 *  package: oreilly.hcj.nested&lt;br /&gt;
 *&lt;br /&gt;
 * This software is granted under the terms of the Common Public License,&lt;br /&gt;
 * CPL, which may be found at the following URL:&lt;br /&gt;
 * http://www-124.ibm.ru/developerworks/oss/CPLv1.0.htm&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright(c) 2003-2005 by the authors indicated in the @author tags.&lt;br /&gt;
 * All Rights are Reserved by the various authors.&lt;br /&gt;
 *&lt;br /&gt;
########## DO NOT EDIT ABOVE THIS LINE ########## */&lt;br /&gt;
&lt;br /&gt;
/**  &lt;br /&gt;
 * Demonstration of some static nested classes.&lt;br /&gt;
 *&lt;br /&gt;
 * @author &lt;br /&gt;
 * @version $Revision: 1.3 $&lt;br /&gt;
 */&lt;br /&gt;
public class DoubleNestedClassDemo {&lt;br /&gt;
  /** &lt;br /&gt;
   * Main method.&lt;br /&gt;
   *&lt;br /&gt;
   * @param args Command line arguments.&lt;br /&gt;
   */&lt;br /&gt;
  public static void main(final String[] args) {&lt;br /&gt;
    DoubleNestedClass.SomeClass.SomeOtherClass obj =&lt;br /&gt;
      new DoubleNestedClass.SomeClass.SomeOtherClass();&lt;br /&gt;
    obj.someMethod();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
/* ########## End of File ########## */&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Use anonymous inner classes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
import java.io.File;&lt;br /&gt;
import java.io.FilenameFilter;&lt;br /&gt;
import java.util.Arrays;&lt;br /&gt;
import java.util.regex.Pattern;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public static FilenameFilter filter(final String regex) {&lt;br /&gt;
    // Creation of anonymous inner class:&lt;br /&gt;
    return new FilenameFilter() {&lt;br /&gt;
      private Pattern pattern = Pattern.rupile(regex);&lt;br /&gt;
      public boolean accept(File dir, String name) {&lt;br /&gt;
        return pattern.matcher(new File(name).getName()).matches();&lt;br /&gt;
      }&lt;br /&gt;
    }; // End of anonymous inner class&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    File path = new File(&amp;quot;.&amp;quot;);&lt;br /&gt;
    String[] list;&lt;br /&gt;
    if (args.length == 0)&lt;br /&gt;
      list = path.list();&lt;br /&gt;
    else&lt;br /&gt;
      list = path.list(filter(args[0]));&lt;br /&gt;
    Arrays.sort(list);&lt;br /&gt;
    for (int i = 0; i &amp;lt; list.length; i++)&lt;br /&gt;
      System.out.println(list[i]);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Using &amp;quot;instance initialization&amp;quot; to perform construction on an anonymous inner class ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class MainClass {&lt;br /&gt;
  public A dest(final String dest, final float price) {&lt;br /&gt;
    return new A() {&lt;br /&gt;
      private int cost;&lt;br /&gt;
      {&lt;br /&gt;
        cost = 100;&lt;br /&gt;
        System.out.println(&amp;quot;Over budget!&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      private String label = dest;&lt;br /&gt;
      public String readLabel() {&lt;br /&gt;
        return label;&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    MainClass p = new MainClass();&lt;br /&gt;
    A d = p.dest(&amp;quot;A&amp;quot;, 101.395F);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface A {&lt;br /&gt;
  String readLabel();&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>