2015-02-17 4 views
0

Прежде всего, я должен признать, что я не ищу свою проблему в Интернете, потому что я не знаю, какие ключевые слова соответствуют моей проблеме. У меня есть только пара час опыт работы с Java, и я наткнулся на следующий синтаксис:Синтаксис языка программирования Java

public class Simulation extends JFrame { 

    // some fields... 

    public Simulation() { 
    ActionListener listener1 = new ActionListener() { 

       @Override 
       public void actionPerformed(ActionEvent arg0) { 
        InputStream pauseStream; 
        try { 
         pauseStream = new FileInputStream("/pause.wav"); 
         PM = new AudioStream(pauseStream); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 



        setPause(!isPause()); 
        if(isPause()) { 
         button1.setText("Play"); 
         MGP.stop(BGM); 
         MGP.start(PM); 
        } else { 
         button1.setText("Pause"); 
         MGP.start(PM); 
         MGP.start(BGM); 
        } 


       } 
      }; 
    } 
     // other methods 
} 

Unfortunatelly, я не понял смысл следующей строки (я имею в виду того, его функции, класс или что-то в этом роде) ActionListener listener1=new ActionListener() { потому что, поскольку я помню, что на C или C++ нет соответствий.

Если я не ошибаюсь, при помощи ActionListener listener1 = new ActionListener() должен создать экземпляр ActionListener, но каков код в следующих фигурных скобках?

+8

http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html –

+0

@ KonstantinV.Salikhov благодарит много, как я уже сказал, прежде чем я не смог его найти, так как я не знал, что такое имя этого факта, но теперь я это узнал – underRated

+2

Начните с книги новичков. – Johan

ответ

1

Код, следующий за фигурными скобками, является синтаксисом для anonymous class. Это похоже на выражение лямбда, которое вы видели в C++ 11, за исключением того, что он определяет весь класс по сравнению с одной функцией (поэтому анонимный класс вместо anonymous function).

Смежные вопросы